Laravel5.5のDB接続で、ローカルからEC2上のDBに接続しようとしてはまった話

DBは共通のテスト環境のDBを使いたいということで、ローカルでの開発環境は個別で作り、DBは共通で使うことにした。

そこで、DB接続の向き先をローカルからEC2上のDBに接続しようとして、いろいろとはまりました。

端的に書きます。

1.ローカルから手動でEC2上にある、Mysqlにたたけるか確認する。

2.LaravelからMysqlに接続する。

 

1.ローカルから手動でEC2上にある、Mysqlにつなげるか確認する。

1.1AWSに接続するときに、DBのポート3306を外部からつなげる事を許可する。

セキュリティグループのインバウンドのルールで、ポート80番のように許可するといいでしょう。

セキュリティ的に、開発環境のIPアドレスが変更しない環境であれば、そのIPアドレスを指定すると、セキュリティ的にはより安全だと思います。

1.2AWS上のEC2に接続したいユーザの外部アクセスを許可する。

こちらのサイトにのっています。

最終的にコマンドで

mysql -h 接続先IPアドレス -uユーザ名 -p

でパスワードを入れて、無事に入ることができれば、ひとまず問題ないです。

2.LaravelからMysqlに接続する。

.envファイル or database.phpにDBの接続情報を書いていくのですが、エラーの中身をみると、変わらず、困っていました。

例えば、rootというユーザ名をdbuserに変更しても、変わらないなど。

Laravelはキャッシュが効いているので、注意しましょう。

php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

こちらの記事を参考 

キャッシュの削除にはこれらのコマンドがあります。

私がはまったのは、

php artisan cache:clear

このコマンドで、いろいろなキャッシュが消えるのかと思ったら、設定ファイルは消えていませんでした。

php artisan config:clear

こちらのコマンドを使うと、設定ファイルが反映されます。

DB接続のdatabase.php

'unix_socket' => env('DB_SOCKET', '/Applications/○○/tmp/mysql/mysql.sock'),

この部分は、削除してください。削除しないと、No such file or directoryとなってしまいました。

 

これだけで、ほぼ1日使ってしまったという。。。とほほ。

コメント

タイトルとURLをコピーしました