无法更新root Mysql密码
Posted
技术标签:
【中文标题】无法更新root Mysql密码【英文标题】:Unable to update root Mysql Password 【发布时间】: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 这是可能的。但是很遗憾,他的评论太含糊了。
【参考方案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 语句来更改密码”,那么这个答案符合要求。)以上是关于无法更新root Mysql密码的主要内容,如果未能解决你的问题,请参考以下文章