一、问题描述
使用mysql -u root -p命令进入mysql shell界面时报错ERROR 1698 (28000): Access denied for user 'root'@'localhost':
二、解决办法
1.使用 sudo
权限登录到 MySQL:
sudo mysql
2.切换到 mysql
数据库:
use mysql;
3.更新 root 用户的身份验证类型为 mysql_native_password
,并设置新的密码(此处将密码修改为123456,请读者依据自身情况进行修改):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
4.刷新权限使更改生效:
FLUSH PRIVILEGES;
现在就可以使用 root 用户和新密码登录 MySQL 了。
运行过程如下:
如下使用新设置的密码即可成功登录mysql:
三、总结
在默认情况下,MySQL 8.0 版本使用了新的身份验证插件(caching_sha2_password),而不再使用旧的插件(mysql_native_password)。因此,当尝试使用 root 用户登录时,会报错 "Access denied"。
将 root 用户的身份验证插件更改为旧的 mysql_native_password
插件,并设置了新的密码为 123456
。这样,就能够使用 root 用户和新密码来登录 MySQL。