使用命令行更改mysql用户密码


84

我正在尝试使用命令行更新数据库用户的密码,但该密码对我不起作用。这是我正在使用的代码:

mysql> UPDATE user SET password=PASSWORD($w0rdf1sh) WHERE user='tate256';

有人可以告诉我这段代码有什么问题。


那么您要遵循什么步骤?简单地放入它是行不通的。如果我没有记错的话,它是一个过程和那个代码。
Idris 2014年

啊。您还记得该如何做的过程吗?
user3310572 '04

这是一个比较详细的,应该更容易理解innovativethought.net/2007/05/17/...
伊德里斯

Answers:


115

在您的代码中,尝试将密码放在单引号内。另外,按照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%";

4
当我这样做时,它会在意外令牌附近返回语法错误('
user3310572 2014年

1
您正在使用哪个版本的mysql?我从版本5.0文档中获取了上述语法。您是否尝试了我发布的命令?
hellboy 2014年

我相信我使用的是4.0版本,是的,我尝试了
user3310572 2014年

在MySQL Ver 14.14中,命令对我来说效果很好,请确保将密码用引号引起来,并且密码中的所有引号均会转义。
Snaver,2014年

1
奇怪的是,即使冲洗后,仍不能正常工作,我:-(我使用MySQL5.7.18-0ubuntu0.16.04.1
coding_idiot

37

从MySQL 5.7.6开始,使用 ALTER USER

例:

ALTER USER 'username' IDENTIFIED BY 'password';

因为:

  • SET PASSWORD ... = PASSWORD('auth_string') 自MySQL 5.7.6起不赞成使用该语法,并且在将来的MySQL版本中将删除该语法。

  • SET PASSWORD ... = 'auth_string'语法不被弃用,但ALTER USER现在是分配密码的首选语句。


1
即使通过PHP与MySQL交互也是如此吗?
oldboy

@Anthony是,如果您的MySQL版本> = 5.7.6
Govind Rai

我是MySQL的新手。到底是ALTER USER ... IDENTIFIED BY ...做什么的?这与UPDATE ... SET ...或有INSERT INTO ...什么不同?
oldboy

1
ALTER USER ... IDENTIFIED BY ...是一条SQL语句,用于配置数据库的用户权限。UPDATEINSERT具有不同的功能,例如名称建议,更新记录并将记录插入数据库中的表中。
Govind Rai

2
给出MariaDB的错误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
帕维尔Niedoba

14

注意:您应以root用户身份登录

 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('your password');


3

在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';"

2

在Windows 10中,退出当前登录名并在命令行上运行

-> mysqladmin -u root password “newpassword”

除了root之外,任何用户都可以。



0

从MySQL 8.0.18开始对我来说很好

mysql> SET PASSWORD FOR 'user'@'localhost' = 'userpassword';


-1

您的登录根目录应该为/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主机。


1
不起作用 在意外令牌附近返回语法错误('
user3310572 '04
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.