2
0

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.

Dockerで立ち上げたLumen(Laravel) + mysqlでマイグレーションを行うとSQLSTATE[HY000] [2054] The server requested authentication method unknown to the clientエラーが起きる

Last updated at Posted at 2021-05-23

LumenとMysqlを触っていて少しはまったので備忘録として残しておく。

#参考サイト
【Laravel】MySQL 8でmigration時にエラーが出たときの対処方法
https://takakisan.com/laravel-mysql-8-migration-error-fix/

#状況
Dockerで立ち上げたLumen(Laravel) + MySQL で Lumenのコンテナに入り
以下のコマンドを入力

Lumen_cmd
php artisan migrate

その後、以下のようにエラーが発生する。
mysql.png

#Dockerコード(MySQL)
MySQLのDockerfileのコードは以下

Dockerfile
FROM mysql:8.0.16

MySQL部分のdocker-compose.ymlのコードは以下

docker-compose.yml
mysql:
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: keijiban
      MYSQL_PASSWORD: root
      MYSQL_USER: user

#Lumenでの.envファイル
.envファイルでのmysql設定部分は以下

.env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=keijiban
DB_USERNAME=user
DB_PASSWORD=root

#調べた結果
どうやらMySQL8ではユーザー作成時の認証方式のデフォルトがcaching_sha2_passwordになっているのが原因

#MySQLを調べてみる
まず、Mysqlのコンテナに入り、Mysqlにログイン、
今回、ユーザー名と認証プラグインがわかればいいので以下のコマンドを入力

MySQL_cmd
select user, plugin from mysql.user;

すると以下のように出力され、user部分がcaching_sha2_passwordであることがわかる。
mysql2.png

#MySQLの変更
その後、確認ができたらcaching_sha2_passwordの認証方式を変更する。
変更するには以下のコマンドを入力

MySQL_cmd
alter user 'user' identified with mysql_native_password by 'pass';

※今回、.envファイルでDB_USERNAME=user、DB_PASSWORD=rootと指定しているので、'user'部分はuser、'pass'部分はrootに変更(この部分は指定しているのに合わせて)

コマンドを入力後、再度ユーザー名と認証プラグインを確認してみると
mysql3.png
このようにcaching_sha2_passwordからmysql_native_passwordに変わっていることが確認できる。

#Lumenで再度php artisan migrateを行ってみる。
MySQLの認証プラグインの変更が終われば、MyAQLのコンテナから抜け、Lumenのコンテナに入り再度

Lume_cmd
php artitisan migrate

を入力、
lumen.png
このように、マイグレーションが成功する。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?