首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用UPDATE在MySQL上更改用户密码

无法使用UPDATE在MySQL上更改用户密码
EN

Stack Overflow用户
提问于 2016-12-19 08:27:03
回答 2查看 8.2K关注 0票数 2

在MySql 5.7.17下,上述指令不起作用,而且我始终没有收到反馈或以下错误消息:

错误1064 (42000):语法出现错误;请检查与MySQL服务器版本对应的手册,以获得在“UPDATE mysql.user SET password=password”(“elephant7”)附近使用的正确语法,其中user=“root”位于行.

我在命令行上尝试了以下UPDATE

代码语言:javascript
复制
UPDATE mysql.user SET Password = PASSWORD('elephant7') WHERE User='root';

我真的不明白我的错误了。我也尝试了没有;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-19 08:34:30

不建议以这种方式在UPDATE表上直接使用mysql.user更改密码。您应该使用SET PASSWORD来代替:

代码语言:javascript
复制
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('elephant7');

关于MySQL的更多信息:分配帐户密码

您的UPDATE命令可能无法工作,因为password列被authentication_string 关于MySQL 5.7.6替换。

现在,authentication_string表中的mysql.user列存储所有帐户的凭据信息。删除password列(以前用于存储使用mysql_native_passwordmysql_old_password插件验证的帐户的密码哈希值)。

如果直接更改授予表,还必须使用FLUSH PRIVILEGES语句重新加载表:

如果直接使用INSERTUPDATEDELETE (不建议使用的)等语句修改授予表,则在通知服务器重新加载表或重新启动该表之前,这些更改对权限检查没有影响。因此,如果直接更改授予表,但忘记重新加载它们,则在重新启动服务器之前,这些更改不会产生任何影响。这可能会让您想知道为什么您的更改似乎没有什么不同! 若要告知服务器重新加载授权表,请执行刷新权限操作。这可以通过发出FLUSH PRIVILEGES语句来完成。 来源:当特权更改生效时

因此,要直接更改授予表上的密码,UPDATE命令必须如下所示,使用正确的列和FLUSH PRIVILEGES语句:

代码语言:javascript
复制
UPDATE mysql.user SET authentication_string = PASSWORD('elephant7') WHERE User = 'root';
FLUSH PRIVILEGES;
票数 5
EN

Stack Overflow用户

发布于 2018-09-13 10:16:13

使用此方法更改密码需要刷新权限才能生效。

代码语言:javascript
复制
flush privileges;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41218479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档