MySQL root用户密码设置为空字符串

时间:2019-08-06 02:53:42

标签: mysql redhat

我反复尝试为mysql根用户设置密码,最初根本没有密码。但是,重置之后,通过代码从我在该主题的教程中找到了

mysqld_safe --skip-grant-tables &
UPDATE user SET authentication_string=PASSWORD("mypasswordhere") where User='root';
FLUSH PRIVILEGES;

终端说我正确设置了密码,但是当我尝试使用密码重新登录时,它不起作用。我发现这是将密码设置为空字符串,有人知道为什么吗?

1 个答案:

答案 0 :(得分:0)

使用PASSWORD()函数设置密码时遇到一些问题,因为激活了validate_password插件,为了绕过该插件,我在设置新密码之前创建了authentication_string值。 / p>

您不需要在安全模式mysql_safe --skip-grant-tables下运行mysql来更改密码,只需正常启动即可尝试:

# mysql -uroot

mysql> SELECT PASSWORD('HELLO');
+-------------------------------------------+
| PASSWORD('HELLO')                         |
+-------------------------------------------+
| *C1BCFD6877BB358C0518ECCD6D5A70BFF7D0A174 |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> use mysql;

mysql> update user set authentication_string="*C1BCFD6877BB358C0518ECCD6D5A70BFF7D0A174" where User='root';
mysql> flush privileges;
mysql> quit

# mysql -uroot -pHELLO

mysql> 

另一个简单的解决方案是ALTER USER命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY '*C1BCFD6877BB358C0518ECCD6D5A70BFF7D0A174';

如果这些解决方案不起作用,请显示命令的输出以及您要测试的MySQL版本。