Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用UPDATE更改MySQL上的用户密码_Mysql_Change Password - Fatal编程技术网

Can';t使用UPDATE更改MySQL上的用户密码

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

在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') 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是在问他的命令有什么问题,尽管语法似乎正确。是的,如果我看到他的查询有错误,我会更新我的答案。但目前它对我来说是正确的,所以我给出了一个替代方案来尝试更多关于这个主题的信息。它现在运行良好,我可以继续。谢谢大家的大力支持