質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

2回答

3000閲覧

ローカル環境にあるCodeIgniterから外部サーバーにあるMySQLを更新したい。

tek_tekeo

総合スコア16

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2017/04/22 08:56

お世話になっております。

MAMPでMacにローカルサーバーを構築し、CodeIgniterを触っています。
開発過程で、外部にあるMySQL(さくらのVPSにて構築)に接続し、更新処理等をしたいと考えてましたが、うまく接続できません。

/application/config/database.phpの以下の部分のみ編集してみましたが上手くいきませんでした。

$db['default'] = array( 'dsn' => '', 'hostname' => 'VPSのIPアドレス', 'username' => 'MySQLのユーザー名', 'password' => 'パスワード', 'database' => '接続したいデータベース', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE );

何をどのように設定すればいいのでしょうか?
非常に知識が乏しく、情けない話ですがよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

PHPのコードをいじって繋がるようなものではありません。

通常サーバーには不正アクセスされないための仕組み、firewall があります、
その働きによって、MySQLのポート、3306はふさがっています。
解放しなければ繋がりません。

MySQL自身の権限設定も外部からの接続を受け付ける設定を共に行わなければいけません。

また、外部サーバーから 3306 を開けて直接つなぐのは、セキュリティ的にアウトなので、RESTなど、APIを使ってデータを操作するのが普通です。

投稿2017/04/22 09:07

編集2017/04/22 09:13
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/04/22 09:26

接続元が特定サーバである前提であれば、WebAPI でのデータ提供も MySQL への直接接続もセキュリティ的にそれほど差はない気がします。 どちらも Firewall でソース ip を絞って完成かと。 今回、開発環境からの接続みたいなので、MySQL直のほうが自然な気がします。追加で対策するとしたら、デフォルトポートの変更ぐらいかなぁ。。。 考慮漏れてますかね?
tek_tekeo

2017/04/22 14:29

ご回答ありがとうございます。 接続できない原因としては「サーバー側が接続用ポートを開放していない」ということを完全に失念しておりました。 Kosuke_Shibuya様から外部サーバーから3306を繋ぐのはセキュリティ的にアウトとご指摘を受け、RESTなどAPIも調べてみたのですが、私の知識ではいまいち理解できず、 下記のサイトを参考にポートフォワードでphpからMYSQLに接続するという方法を試しています。 http://blog.sog-office.jp/?p=107 これを使用した方がセキュリティ的に優れていると思ったのですがどうでしょうか? また、te2ji様の仰っている通り開発環境からの接続です。外部サーバーの接続用ポートを開放し、FirewallでソースIPを絞るという手の方がCodeIgniterのDBヘルパーを使える?ので、そちらの方が私として良いような気がします。 知識が乏しすぎて言ってることが間違いだらけだと思いますが、どちらの方が良いと思われますか?
退会済みユーザー

退会済みユーザー

2017/04/22 14:38

ssh + ポートフォワードの方が当然良いでしょう。 「FirewallでソースIPを絞る」自分の自宅環境が固定IPで契約しているのであれば、それでもいいと思います。
tek_tekeo

2017/04/22 14:59

わかりました。 Kosuke_Shibuya様、te2ji様、親切にご回答いただき本当にありがとうございました。
guest

0

接続先/接続元のエラーと接続ログを追記していただきたいところですが、よくある原因としては
・「外部にあるMySQL」サーバ側が接続用のポートを開放していない
・「MySQLのユーザー名」が実は「外部にあるMySQL」サーバのユーザとして適切ではない。
といったケースがあります。

まずはコマンドラインから、接続確認を行ってみてはいかがでしょうか?

投稿2017/04/22 09:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問