我反复尝试为mysql根用户设置密码,最初根本没有密码。但是,重置之后,通过代码从我在该主题的教程中找到了
mysqld_safe --skip-grant-tables &
UPDATE user SET authentication_string=PASSWORD("mypasswordhere") where User='root';
FLUSH PRIVILEGES;
终端说我正确设置了密码,但是当我尝试使用密码重新登录时,它不起作用。我发现这是将密码设置为空字符串,有人知道为什么吗?
答案 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版本。