23
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laradock で mysql がうまく動作しない時は ( mysqlコンテナが起動しない、migration 出来ない)

Last updated at Posted at 2019-01-31

何番煎じかわかりませんが、laradockでLaravel環境をセットアップした時に、mysql周りで詰まった点があったのでQiitaにまとめておきます!

migrate出来ない

laradockのセットアップを終え、php artisan migrateコマンドを実行しようとしたところ、下記のエラーが発生。

Illuminate\Database\QueryException : 
SQLSTATE[HY000] [2054] The server requested authentication 
method unknown to the client 
(SQL: select * from information_schema.tables 
where table_schema = homestead and 
table_name = migrations)

調べてみると、MySQLのバージョンが影響していることが判明しました。MySQL 8.0の場合、連携がうまく行かなくなるようです。
https://blog.websandbag.com/entry/2018/05/17/121730

Laradockのドキュメントを読むと、デフォルトでは MySQL 8.0 が走るものの、あくまでも開発段階にあるため、stable バージョンを使った方がいいとしています。
https://laradock.io/documentation/#change-the-mysql-version

今回は MySQL 5.7 バージョンを使用することにします。

laradockフォルダ内の.envファイルを編集します。

laradock/.env
MYSQL_VERSION = latest #変更前
MYSQL_VERSION = 5.7 #変更後

2019年2月1日現在、選択できるバージョンは下記の通りです。

  • 5.5
  • 5.6
  • 5.7
  • 8.0

そして、コンテナを再起動してあげればいいと思っていたのですが...

mysql コンテナが起動しない

mysqlコンテナが起動しなくなりました。
doneになるものの、STATUS が Exitedとなってしまい、コンテナが立ち上がらなくなってしまいました。

laradock/
❯ docker-compose up -d mysql
Starting laradock_mysql_1            ... done

❯ docker ps -a | grep laradock_mysql_1
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                      PORTS                                      NAMES
9c2b8b8f62f0        laradock_mysql        "docker-entrypoint.s…"   15 minutes ago      Exited (2) 21 seconds ago                                              laradock_mysql_1

色々調べまわった結果、有用だった情報はこれ
https://nogson2.hatenablog.com/entry/2018/11/12/152215

MYSQLのバージョンを変更する場合は、DATA_PATH_HOSTで設定したフォルダをきれいして、イメージを作成し直す必要があるらしい。

ということでパスを確認してみます。

laradock/
cat .env | grep DATA_PATH_HOST
DATA_PATH_HOST=~/.laradock/data

私の環境では~/.laradock/dataに格納されていたので、こちらを使用します。

rm -rf ~/.laradock/data/mysql
docker rmi laradock_mysql -f
docker rmi mysql -f

そして、mysqlをビルドし直します。全てビルドし直させたいので、--no-cacheオプションをつけておきます。

docker-compose build --no-cache mysql

最後にmysql --versionコマンドで起動しているか、バージョンが変更されているかを確認しておきましょう。

❯ docker-compose exec mysql mysql --version
Server version: 5.7.25 MySQL Community Server (GPL)

無事に変更が完了しました!

23
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?