LaradockでCakePHPを構築した時に起きたphpmyadminに接続できなかったからメモする
何が起きたのか
LradockでCakePHPを構築している際にmysqlに接続したがうまくログインすることができない。 mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password] エラー 改めてenvファイルにあるMysql PERCONA_PASSWORDとPERCONA_ROOT_PASSWORDを調べて入力したがエラーが返ってきた。
原因
LradockにあるのはMySQL8.0 の認証方式の変更が原因だったようだ 今までのmysql5.7までの認証方式はmysql_native_passwordだった。 今回はcaching_sha2_password方式変わっていた。そこでmysqlコンテナーに入りdefaultとrootの認証方式を変更した。
解決方法
Before:認証方式をチェックする
mysql> SELECT user,host,plugin FROM mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | default | % | caching_sha2_password | | root | % | caching_sha2_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | caching_sha2_password | +------------------+-----------+-----------------------+ 6 rows in set (0.00 sec)
ここのdefaultとrootのプラグインを変える
mysql> ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';` mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';
確認
mysql> SELECT user,host,plugin FROM mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | default | % | mysql_native_password | | root | % | mysql_native_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | caching_sha2_password | +------------------+-----------+-----------------------+ 6 rows in set (0.00 sec)
変更できています。 一応 laradkck/mysql/my.cofファルにも任意の場所に変更を書き加える default_authentication_plugin=mysql_native_password
余談だがコンテナーを起動する際にあらかじめmysqlフォルダのDockerfileのMysqlバージョンをlatestから5.7に変更するとmysql5.7を利用できる。 あと、途中mysqlに接続できたのはいいがデータベース作れなかったことがあったが、これはenvファイルのDATA_PATH_HOST=/.~laradock/dataの永続化していたようだ。 これをDATA_PATH_HOST=.laradock/dataにしたらエラーが消えた。