MySQL ERROR 1698 (28000): Access denied for user 'root'@'localhost'

388 阅读1分钟

MySQL 报错 ERROR 1698 (28000): Access denied for user 'root'@'localhost' 通常是因为 root 用户在 MySQL 中的身份验证配置问题。这个错误通常发生在 MySQL 8.0 及更高版本中,因为它们默认使用 auth_socket 插件来验证 root 用户,而不是密码。

解决步骤

步骤一:使用 sudo 登录 MySQL

因为 root 用户受到 auth_socket 插件的保护,你需要使用 sudo 来登录 MySQL:

sudo mysql -u root

步骤二:检查当前的身份验证插件

检查 root 用户使用的身份验证插件:

SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

你应该看到类似的输出,显示 root 用户使用 auth_socket 插件:

+------+-----------+-------------+
| user | host      | plugin      |
+------+-----------+-------------+
| root | localhost | auth_socket |
+------+-----------+-------------+

步骤三:更改身份验证插件为 mysql_native_password

如果你想使用密码来进行身份验证,可以将 root 用户的插件更改为 mysql_native_password 并设置新密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
FLUSH PRIVILEGES;

your_new_password 替换为你希望设置的新密码。

步骤四:退出 MySQL

执行完更改后,退出 MySQL:

EXIT;

步骤五:使用新密码登录

现在,你应该能够使用新设置的密码登录 MySQL:

mysql -u root -p

输入你刚刚设置的新密码。