実現したいこと
phpとインフラを勉強している者です。
xamppからアクセスしているcakephp4のプロジェクトから、さくらVPSに置いてあるデータベースにアクセスしたいです。
ここに実現したいことを箇条書きで書いてください。
さくらVPSのmysqlにアクセスし、cakephp4のwelcomeページのデータベースを接続可能状態にしたい。
まだまだ知識不足等色々あるため、質問文が分かりにくいかもしれませんが、
原因をご存じであれば、教えて頂きたいと思います。
よろしくお願いします。
前提
cakephp4でECサイトを作ろうとしています。
開発環境から本番サーバへのデータベースに接続したいのですが、エラーが起こって先に進めなくなっています。
開発環境と本番環境には同じapp_local.phpを置いてあります。
xamppのmysqlで開発を進めることが出来ますが、いずれ複数人で開発をすることになってもいいように、今のうちに環境構築の知識を身に付けたいです。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ CakePHP is NOT able to connect to the database. Connection to Mysql could not be established: SQLSTATE[HY000] [2002] 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。
該当のソースコード
ソースコード //app_local.phpに記載してあります。 'Datasources' => [ 'default' => [ 'host' => 'xxx.xxx.xxx.xxx', /* * CakePHP will use the default DB port based on the driver selected * MySQL on MAMP uses port 8889, MAMP users will want to uncomment * the following line and set the port accordingly */ //'port' => 'non_standard_port_number', 'username' => 'xxx', 'password' => 'xxxxxxxxx', 'database' => 'xxxxxx', /* * If not using the default 'public' schema with the PostgreSQL driver * set it here. */ //'schema' => 'myapp', /* * You can use a DSN string to set the entire configuration */ 'url' => env('DATABASE_URL', null), ],
試したこと
mysqlにユーザーを登録し、GRANT文ですべてのデータベースにアクセスできるように権限を与えた。
hotには同じユーザ名で本番環境のIPアドレスとlocalhost、127.0.0.1で作成してあります。
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| xxxx | xxx.xxx.xxx.xxx |
さくらVPSはlocalhost以外のアクセスを禁止しており
sudo vi /etc/my.cnfに
[mysqld] bind-addressを追記すれば許可を得られる記事があったため
sudo vi /etc/my.cnfに追記しました。
ただ、[mysqld] のタグがなかったため
/etc/my.cnf
[client-server]に
[mysqld]
bind-address = 0.0.0.0
127.0.0.1
と追記しました。
がアクセスできませんでした。
本番環境ではapp_local.phpの 'host' => 'xxx.xxx.xxx.xxx',で
データベースにアクセスできることは確認しました。
開発環境からでは本番環境のデータベースにアクセスできませんでした。
xampp内蔵のmysqlにはアクセスできました。
centosのファイアーウォールは該当サーバーからのport3306を開放しています
rich rules:
rule family="ipv4" source address="xxx.xxx.xxx.xxx" port port="3306" pro tocol="tcp" accept
rule family="ipv4" source address="127.0.0.1" port port="3306" protocol= "tcp" accept
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
cakephp4.4.14
phpPHP 7.4.33
(mysqld 8.0.32)
centos9
ここにより詳細な情報を記載してください。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/07/01 02:28 編集