Laradockでmysqlとphpmyadminの起動
概略
参考資料
- #1407 mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password] →phpmyadmin繋がらない問題1
- #754 Can't login to PHPMyAdmin →phpmyadmin繋がらない問題2
- Laravelの開発環境をLaradockを使って構築する方法
- Laradockを使ったlaravel開発環境
mysqlの設定
.envのmysqlを書き換え。
laradockの.envにあるMYSQLの設定を書き換える。mysql8は認証まわりでめんどくさいという話なので5.7で。
### MYSQL ################################################# # MYSQL_VERSION=latest # MYSQL_DATABASE=default # MYSQL_USER=default # MYSQL_PASSWORD=secret MYSQL_VERSION=5.7.22 # fixed version MYSQL_DATABASE=booklife MYSQL_USER=owner MYSQL_PASSWORD=hogehoge
ビルドし直し※失敗版
phpmyadminを起動したら--build オプションをつけてビルドしろと出たので実施。 関係ないnginxまで巻き込まれてえらい時間がかかる。
docker-compose up --build -d nginx mysql phpmyadmin
phpmyadminはhttp://localhost:8080からアクセス。 画面は開くがmysqlに繋がらない
設定更新前?のmysqlのデータディレクトリ削除
find . -name mysql ./.laradock/data/mysql ./.laradock/data/mysql/mysql ./laradock/laradock/mysql
laradock環境構築時にできた永続化されたデータベース本体。これをいったん削除する
sudo rm -rf ./.laradock/data/mysql
laradockディレクトリでリビルド
docker-compose build mysql Building mysql Step 1/9 : ARG MYSQL_VERSION=latest Step 2/9 : FROM mysql:${MYSQL_VERSION} ERROR: Service 'mysql' failed to build: invalid reference format
ここで謎にエラー。.env見ても特に問題なく。再実行するといけた。
立ち上げ直し
docker-compose up -d nginx mysql phpmyadmin
が、やはりphpmyadminは繋がらず。
mysqlの起動確認
docker-compose exec mysql bash mysql -u owner -p booklife show databases;
で中身は見れるので、mysql自体は正常っぽい。
laravel側からのマイグレーション
/var/www# php artisan make:migration create_test_db_table Created Migration: 2019_02_12_133510_create_test_db_table /var/www# php artisan migrate Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations)
スキーマ名がhomesteadになってるのでおかしい。(ここでnginxもbuildし直せば直ったかも?)
workspace(booklife)の.env修正
booklife側の.envを書き換える。
DB_CONNECTION=mysql # DB_HOST=127.0.0.1 # DB_DATABASE=homestead # DB_USERNAME=homestead # DB_PASSWORD=secret DB_HOST=mysql DB_PORT=3306 DB_DATABASE=booklife DB_USERNAME=owner DB_PASSWORD=hogehoge
再度マイグレーション実施。
php artisan make:migration create_test_db_table
で、こちらも問題なく動作確認。
phpmyadminはそもそもサーバの指定誤り
記事 を読み返すとそもそもログイン時の指定が以下じゃないとだめだった。
host: mysql user: root pass: root
これでphpmyadminにもログイン。