在Mysql 5.7中更新用户密码

Tob*_*bia 6 authentication root mysql-5.7

我编写了一个安装脚本来使用此SQL命令更改root密码:

UPDATE user SET password='*C563415623144561...' WHERE user='root';
Run Code Online (Sandbox Code Playgroud)

这在Mysql 5.7上不起作用:http: //dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-6.html#mysqld-5-7-6-account-management

我的问题是:如何用另一个兼容5.6和5.7版Mysql的命令更改此命令?我想用散列字符串更新密码,而不是使用明确的密码.

mda*_*mia 20

从mysql 5.7开始,这不再是用户表中的密码字段.它现在称为authentication_string.您可以像这样更改或设置密码:

set password for 'jeff'@'localhost' = PASSWORD('mypass'); // this automatically hashes the password
Run Code Online (Sandbox Code Playgroud)

如果您想使用您的查询,只需更改passwordauthentication_string,它就可以使用.

UPDATE user SET authentication_string='*C563415623144561...' WHERE user='root@localhost';
Run Code Online (Sandbox Code Playgroud)

希望这有帮助.


小智 13

我在Mysql 5.7.22中使用此命令重置为空密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这似乎是5.7.22的唯一方法 (2认同)

Ven*_*tra 5

鉴于 'SET PASSWORD FOR = PASSWORD('')' 在 mysql 5.7 上已被弃用。如果操作不正确,您甚至可能会在系统日志中出现以下错误。

The plugin 'auth_socket' used to authenticate user 'root'@'localhost' is not loaded. Nobody can currently login using this account.
Run Code Online (Sandbox Code Playgroud)

我建议使用下面的命令。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypass';
Run Code Online (Sandbox Code Playgroud)

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/