Can';t使用UPDATE更改MySQL上的用户密码
在MySql 5.7.17下,上述指令不起作用,我始终没有收到任何反馈或以下错误消息: 错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第行的“UPDATE MySQL.user SET password=password”(“elephant7”)附近使用的正确语法,其中user=“root” 我在命令行上尝试了以下Can';t使用UPDATE更改MySQL上的用户密码,mysql,change-password,Mysql,Change Password,在MySql 5.7.17下,上述指令不起作用,我始终没有收到任何反馈或以下错误消息: 错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第行的“UPDATE MySQL.user SET password=password”(“elephant7”)附近使用的正确语法,其中user=“root” 我在命令行上尝试了以下UPDATE: UPDATE mysql.user SET Password = PASSWORD('elephant7') WH
UPDATE
:
UPDATE mysql.user SET Password = PASSWORD('elephant7') WHERE User='root';
我真的看不出我的错误了。我也试过不使用
不建议直接在mysql.user
表上使用UPDATE
以这种方式更改密码。您应改为使用:
您的UPDATE
命令可能不起作用,因为password
列被authentication\u字符串
替换
mysql.user
表中的authentication\u字符串
列现在存储所有帐户的凭据信息。password
列以前用于存储通过mysql\u native\u password
和mysql\u old\u password
插件验证的帐户的密码散列值,现在已被删除
如果直接更改授权表,还必须使用FLUSH PRIVILEGES
语句重新加载表:
UPDATE mysql.user SET authentication_string = PASSWORD('elephant7') WHERE User = 'root';
FLUSH PRIVILEGES;
如果您直接使用语句(如INSERT
、UPDATE
或DELETE
(,不推荐使用)修改授权表,则在您通知服务器重新加载表或重新启动表之前,更改对权限检查没有影响。因此,如果您直接更改了授权表,但忘记了重新加载它们,那么在重新启动服务器之前,这些更改不会生效。这可能会让你想知道为什么你的改变似乎没有什么不同
要告诉服务器重新加载授权表,请执行刷新权限操作。这可以通过发出FLUSH PRIVILEGES
语句来实现
资料来源:
因此,直接更改授权表上密码的UPDATE
命令必须如下所示,使用正确的列和语句:
UPDATE mysql.user SET authentication_string = PASSWORD('elephant7') WHERE User = 'root';
FLUSH PRIVILEGES;
不建议直接在
mysql.user
表上使用UPDATE
以这种方式更改密码。您应改为使用:
您的UPDATE
命令可能不起作用,因为password
列被authentication\u字符串
替换
mysql.user
表中的authentication\u字符串
列现在存储所有帐户的凭据信息。password
列以前用于存储通过mysql\u native\u password
和mysql\u old\u password
插件验证的帐户的密码散列值,现在已被删除
如果直接更改授权表,还必须使用FLUSH PRIVILEGES
语句重新加载表:
UPDATE mysql.user SET authentication_string = PASSWORD('elephant7') WHERE User = 'root';
FLUSH PRIVILEGES;
如果您直接使用语句(如INSERT
、UPDATE
或DELETE
(,不推荐使用)修改授权表,则在您通知服务器重新加载表或重新启动表之前,更改对权限检查没有影响。因此,如果您直接更改了授权表,但忘记了重新加载它们,那么在重新启动服务器之前,这些更改不会生效。这可能会让你想知道为什么你的改变似乎没有什么不同
要告诉服务器重新加载授权表,请执行刷新权限操作。这可以通过发出FLUSH PRIVILEGES
语句来实现
资料来源:
因此,直接更改授权表上密码的UPDATE
命令必须如下所示,使用正确的列和语句:
UPDATE mysql.user SET authentication_string = PASSWORD('elephant7') WHERE User = 'root';
FLUSH PRIVILEGES;
使用此方法更改密码需要刷新权限才能生效
flush privileges;
使用此方法更改密码需要刷新权限才能生效
flush privileges;
此命令的代码在哪里?您的命令(如问题标题中所述)正在我的机器上运行…请发布您收到此错误的命令。此命令的代码在哪里?您的命令(如问题标题中所述)正在我的机器上工作…请发布您收到此错误的命令我同意,但我认为OP正在询问他的命令有什么问题,即使语法似乎正确是的,如果我看到他的查询有错误,我会更新我的答案。但目前它对我来说是正确的,所以我给出了一个替代方案来尝试更多关于这个主题的信息。它现在运行良好,我可以继续。感谢大家的大力支持我同意,但我认为OP是在问他的命令有什么问题,尽管语法似乎正确。是的,如果我看到他的查询有错误,我会更新我的答案。但目前它对我来说是正确的,所以我给出了一个替代方案来尝试更多关于这个主题的信息。它现在运行良好,我可以继续。谢谢大家的大力支持