错误 1045 (28000):设置插件 = '' 后,用户 'root'@'localhost'(使用密码:YES)的访问被拒绝

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) after set plugin = ''

我安装了 MySQL 5.7 并希望为 root 启用无密码登录。

所以我执行了

mysql> update mysql.user set plugin='' where User='root';
mysql> flush privileges;

现在我无法再以 root 身份登录。既没有密码也没有密码。我分别收到以下错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

我阅读了有关使用 mysqld_safe 的解决方案,但我无法使用它,因为我们使用的是 systemd。

有什么建议吗?理想情况下无需重新启动 mysqld 但很好...


我也试过了

mysqladmin flush-privileges
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

"建议?"

阿克!我无法理解什么会迫使某人认为 root 无需身份验证的用户登录是个好主意。

我建议我们重新考虑 "passwordless" 登录特权用户的安全隐患。 (这将是安全审计的危险信号。)如果我绝对必须实施无密码登录(因为已排除所有其他可能的替代解决方案),我只会为非常严格 有限权限。


要在 MySQL 中实现 "no password" 登录,我们可以对 plugin 使用 'native_mysql_password',对 [=14] 使用空字符串 '' =].

(我不知道我们想要将 plugin 设置为空字符串的任何原因。)

好的,所以我最终停止了 mysqld 并执行了以下操作

systemctl stop mysqld
/usr/sbin/mysqld --skip-grant-tables &

mysql -u root
mysql> update mysql.user set plugin = 'mysql_native_password' where user = 'root';
mysql>flush privileges;

systemctl stop mysqld
systemctl start mysqld

它又开始工作了