【问题标题】:Unable to update root Mysql Password无法更新root Mysql密码
【发布时间】:2020-06-07 12:12:01
【问题描述】:

我无法使用以下查询重置 mysql 密码:

UPDATE mysql.user 
SET authentication_string=PASSWORD('root') 
WHERE user='root' 
  and host='localhost'; 

我遇到以下错误:

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '('root') WHERE User = 'root' AND Host = 'localhost'' 附近使用正确的语法

【问题讨论】:

  • 使用SET PASSWORD,而不是这个手动hackery。
  • PASSWORD 函数在 MySQL 5.7 中被弃用,在 MySQL 8.0 中被删除
  • @spencer7593 SET PASSWORD 语句和 PASSWORD() 函数略有不同...
  • @Akina 我认为斯宾塞指出原始查询失败是因为PASSWORD() 是吐司。这就是语法错误的来源。
  • @tadman 这是可能的。但是很遗憾,他的评论太含糊了。

标签: mysql


【解决方案1】:

正如@spencer7593 指出的那样,PASSWORD() 函数已在 MySQL 8.0 中删除,因此即使在以前的版本中,此代码也将不再工作。出现语法错误的原因是,没有将其识别为函数,它后面的 ( 字符是意外的并且是语法错误。

这是因为除了(以前)是一个函数之外,它还是一个keyword

您应该通过mysqladmin 命令行工具或SET PASSWORD 语句来调整密码:

SET PASSWORD FOR 'root' = '...'

【讨论】:

  • +10 我们可以使用SET PASSWORD 语句来更改密码。观察到的行为最可能的解释是 OP 正在 MySQL 8.0 中执行语句,并且在 MySQL 8.0 中删除了 PASSWORD() 函数。 (如果 OP 问题是“我可以在 MySQL 8.0 中使用什么 SQL 语句来更改密码”,那么这个答案符合要求。)
猜你喜欢
  • 2021-04-23
  • 1970-01-01
  • 2020-03-04
  • 2016-10-13
  • 1970-01-01
  • 2019-08-10
  • 2018-06-02
  • 1970-01-01
相关资源
最近更新 更多