たかおLab

SQLSTATE[HY000] [2054] の対処法

PHP データベース プログラミング
MySQLのロゴ画像

LaradockのMySQLのバージョンは、デフォルトだと最新(MYSQL 8.0)になっています。

 

 

MYSQL8.0ではログイン認証方式に caching_sha2_password がデフォルトで設定されています。

 

しかし、PHPのMySQL接続ライブラリはこれに対応していないらしいです。

 

試しに、migrateしてみたりphpMyAdminでログインしようとすると、以下のエラーが出ます。

 

 

なので、認証方式をmysql_native_password に戻してあげましょう。

 

 

 

既存ユーザの認証方式の変更

 

mysqlコンテナに入り、rootユーザの認証方式を確認してみましょう。

 

 

すると、以下のような結果が返って来ると思います。

 

mysqlのユーザ情報の確認

 

「plugin」の欄に書かれているのがログイン認証方式です。

 

rootユーザの認証方式がcaching_sha2_passwordになっているのが確認できます。

 

以下のコマンドで、認証方式をmysql_native_passwordに変更します。

 

 

変更後、もう一度認証方式を確認してみると、

 

認証方式変更後のmysqlユーザ情報の確認

 

無事に変更できました。

 

 

新規ユーザの認証方式の変更

 

次に、新規作成時のユーザの認証方式を変更します。

 

exitでmysqlの対話モードを終了してから、etc/mysql/my.cnf を編集します。

 

 

このとき、vimが入ってない場合は先にインストールしておきましょう。

 

 

my.cnf を開いたら、最後の行に以下を追加して保存します。

 

 

 

以上です。これで、次回から新しくユーザを作った際に、認証方式が自動でmysql_native_passwordになります。

 

 

参考URL

MySQL8.0 認証方式を変更する(Laravel5)