ERROR 1045(28000):拒绝访问用户&root;' @' localhost' (使用密码:是)设置插件=''

时间:2017-12-12 14:37:30

标签: mysql permissions mysql-5.7

我安装了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)'

2 个答案:

答案 0 :(得分:1)

" 建议"

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

我建议我们重新考虑一下"无密码"登录特权用户。 (这将是安全审计的红旗。)如果我绝对必须实施无密码登录(因为已经排除了所有其他可能的替代解决方案),我只会为非常严格限制的用户执行此操作特权。

实施"无密码"在MySQL中登录,我们可以'native_mysql_password'使用plugin''使用空字符password

(我不知道我们有什么理由要将plugin设置为空字符串。)

答案 1 :(得分:0)

好的,所以我最终停止了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

它再次工作