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日使ってしまったという。。。とほほ。
コメント