无法更新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密码的主要内容,如果未能解决你的问题,请参考以下文章

更新ubuntu之后无法登陆mysql

Mac Mysql更改密码,没有用户表运行更新查询

PHP无法连接MYSQL8.0一般处理办法

PHP无法连接MYSQL8.0一般处理办法

docker 中安装mysql8之后无法远程连接的问题caching-sha2-password

无法使用 PHP MySQL 更新数据库,其中数据来自 AngularJS1.2 服务