mysql8 エラー「ERROR 1698 (28000): Access denied for user ‘root’@’localhost’」が発生した場合の対処法

mysql8 エラー「ERROR 1698 (28000): Access denied for user ‘root’@’localhost’」が発生した場合の対処法

mysqlでmysql_secure_installationを実行して作成したrootのパスワードでログインできなかったため、その原因と対処法を記述してます。

環境

  • OS ubuntu 20.04.1
  • mysql 8.0.21

エラー全文

rootでログインしようとした際に発生。
mysql_secure_installationで作成したパスワードを入力しても入れない

原因

rootユーザーの認証方式が「auth_socket」になっているため。
「auth_socket」になっていると、mysql -u 実行時に指定されているユーザ名が、Ubuntuにログイン中のユーザ名と同じでなければいけない。

「caching_sha2_password」は、mysql8から追加された新しい認証方式。

mysql8以降では、デフォルトの設定となっている。

対処法

sudoでログインする

または、sudoなしであれば、rootの認証方式を変更する

※mysql8 デフォルト認証方式「caching_sha2_password」を変更する方法はこちら