ニート道

働きたくないでござる。

MySQL8.0の認証方式の確認・変更方法について。

MySQL8.0の認証方式のデフォルトは「caching_sha2_password」になっていますが、利用の言語環境等のMySQLドライバによっては、「caching_sha2_password」に対応しておらず「コマンドラインでmysqlに接続する分には接続出来るんだけれど、◯◯からは接続出来ない」みたいな状態が発生する事になるので、認証方式を「mysql_native_password」に変更してやる必要があります。 そういう場合の対処方法について紹介します。

現在の各ユーザの認証方式を確認する方法

MySQLで

select user,plugin from mysql.user;

とする事でユーザの一覧とそれぞれの現在の認証方式を確認する事が出来ます。

認証方式を変更する方法

ALTER USERで認証方式を変更する事ができます。

alter user 'hoge'@'localhost' identified with mysql_native_password by 'password';

今後追加するユーザのデフォルトの認証形式を変更する場合

既に追加済みのユーザの認証方式は上述しているALTER USER で変更する必要がありますが、/etc/my.cnfに以下を追加する事で今後追加するユーザの認証方式を「mysql_native_password」に固定する事が出来ます。

default_authentication_plugin=mysql_native_password

利用言語のドライバ等が「caching_sha2_password」に対応していない場合に便利かもしれません。