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で作成したパスワードを入力しても入れない
1 2 3 4 5 |
mysql -u root -p <出力結果> Enter password: ERROR 1698 (28000): Access denied for user 'root'@'localhost' |
原因
rootユーザーの認証方式が「auth_socket」になっているため。
「auth_socket」になっていると、mysql -u 実行時に指定されているユーザ名が、Ubuntuにログイン中のユーザ名と同じでなければいけない。
1 2 3 4 5 6 7 8 9 10 11 12 |
mysql> SELECT User, Host, plugin FROM mysql.user; <出力結果> +------------------+-----------------------+ | User | plugin | +------------------+-----------------------+ | debian-sys-maint | caching_sha2_password | | mysql.infoschema | caching_sha2_password | | mysql.session | caching_sha2_password | | mysql.sys | caching_sha2_password | | root | auth_socket | +------------------+-----------------------+ |
「caching_sha2_password」は、mysql8から追加された新しい認証方式。
mysql8以降では、デフォルトの設定となっている。
対処法
sudoでログインする
1 |
sudo mysql -u root -p |
または、sudoなしであれば、rootの認証方式を変更する
1 2 3 4 5 |
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password'; または ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; |
※mysql8 デフォルト認証方式「caching_sha2_password」を変更する方法はこちら
-
前の記事
jquery onメソッドを使用して複数のイベントを登録する 2020.08.17
-
次の記事
mysql8 デフォルト認証方式「caching_sha2_password」を変更する 2020.08.17
コメントを書く