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で作成したパスワードを入力しても入れない
mysql -u root -p
<出力結果>
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
原因
rootユーザーの認証方式が「auth_socket」になっているため。
「auth_socket」になっていると、mysql -u 実行時に指定されているユーザ名が、Ubuntuにログイン中のユーザ名と同じでなければいけない。
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でログインする
$ sudo mysql -u root -p
または、sudoなしであれば、rootの認証方式を変更する
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
コメントを書く