我正在尝试使用命令行更新数据库用户的密码,但该密码对我不起作用。这是我正在使用的代码:
mysql> UPDATE user SET password=PASSWORD($w0rdf1sh) WHERE user='tate256';
有人可以告诉我这段代码有什么问题。
我正在尝试使用命令行更新数据库用户的密码,但该密码对我不起作用。这是我正在使用的代码:
mysql> UPDATE user SET password=PASSWORD($w0rdf1sh) WHERE user='tate256';
有人可以告诉我这段代码有什么问题。
Answers:
在您的代码中,尝试将密码放在单引号内。另外,按照mysql的文档,以下应该工作-
SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('cleartext password');
FLUSH PRIVILEGES;
最后一行很重要,否则您的密码更改将不幸地无效。
编辑:
我在本地进行了一项测试,结果很好-
mysql> set password for 'test' = PASSWORD('$w0rdf1sh');
Query OK, 0 rows affected (0.00 sec)
我的版本是5。您可以使用以下命令确定您的版本-
SHOW VARIABLES LIKE "%version%";
5.7.18-0ubuntu0.16.04.1
ALTER USER
例:
ALTER USER 'username' IDENTIFIED BY 'password';
因为:
SET PASSWORD ... = PASSWORD('auth_string')
自MySQL 5.7.6起不赞成使用该语法,并且在将来的MySQL版本中将删除该语法。
SET PASSWORD ... = 'auth_string'
语法不被弃用,但ALTER USER
现在是分配密码的首选语句。
ALTER USER ... IDENTIFIED BY ...
做什么的?这与UPDATE ... SET ...
或有INSERT INTO ...
什么不同?
ALTER USER ... IDENTIFIED BY ...
是一条SQL语句,用于配置数据库的用户权限。UPDATE
并INSERT
具有不同的功能,例如名称建议,更新记录并将记录插入数据库中的表中。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root' IDENTIFIED BY
这是WAMP v3.0.6的更新的答案
UPDATE mysql.user
SET authentication_string=PASSWORD('MyNewPass')
WHERE user='root';
FLUSH PRIVILEGES;
在MySQL 5.7.6之前,可以从命令行运行:
mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$w0rdf1sh');"
我没有要测试的mysql安装程序,但我认为在您的情况下
mysql -e "UPDATE mysql.user SET Password=PASSWORD('$w0rdf1sh') WHERE User='tate256';"
这对我有用。从MYSQL网页获得解决方案
在MySQL中,运行以下查询:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'New_Password';
您的登录根目录应该为/usr/local/directadmin/conf/mysql.conf
。然后尝试以下
UPDATE mysql.user SET password=PASSWORD('$w0rdf1sh') WHERE user='tate256' AND Host='10.10.2.30';
FLUSH PRIVILEGES;
主机是您的mysql主机。