在Mac上安装MySQL后,使用ALTER USER语句重置MySQL root密码

227

我最近安装了MySQL,安装后似乎必须要重置密码才能进行其他操作。

现在我已经按照通常的方式重置了密码:

update user set password = password('XXX') where user = root;

顺便说一句:我花了很长时间才弄明白MySQL把“密码”字段命名为“authentication_string”的原因。像这样的更改让我感到非常沮丧。

不幸的是,似乎我需要以我不知道的其他方式更改密码。也许这里已经有人遇到过这个问题?

22个回答

572

如果这不是您第一次设置密码,请尝试以下方法:

mysql> UPDATE mysql.user SET Password=PASSWORD('your_new_password')
           WHERE User='root'; 

如果您遇到以下错误,很有可能是因为您从未设置过密码:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

要首次设置密码:

mysql> SET PASSWORD = PASSWORD('your_new_password');
Query OK, 0 rows affected, 1 warning (0.01 sec)
参考资料:https://dev.mysql.com/doc/refman/5.6/en/alter-user.html

11
谢谢!MySQL 给出的错误信息非常令人困惑! - Ed .
1
这对我来说有效,使用的是mysql-5.7.13-osx10.11-x86_64 - GiriB
1
在执行'mysql> SET PASSWORD = PASSWORD('your_new_password');'之后,我遇到了以下错误: 'ERROR 29 (HY000): File './mysql/user.MYD' not found (Errcode: 2 - No such file or directory)'。 有人可以帮帮我吗? - Ray Kim
4
请注意,与MySQL的建议相反,您不需要使用“ALTER USER”语句,而只需使用“SET PASSWORD”即可。 - Fabien Haddadi
1
非常感谢。这种方法对我很有效,用于“第一次设置密码”。SQL没有给出正确的错误提示,即密码尚未设置。 - Manthan Patel
显示剩余7条评论

178

1
谢谢!这对我有用!我正在使用mysql-5.7.11-osx10.10-x86_64。 - LeArNr
谢谢!它帮助了我。 - Sparw
10
经过很多的挫败后,在Mint 18 MySQL 5.7.18上使用这个变体成功了:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password'; - Steve
非常感谢您。这是唯一对我有效的方法。 - RandyMy
1
@Steve 谢谢。对于其他人来说,他的命令在 MySQL 8 上也有效。 - Chris Chiasson
显示剩余6条评论

35

1
考虑到你甚至还没有使用数据库,这似乎非常复杂。 - seba.wagner
警告中要求您使用 SET PASSWORD FOR 'root'@'localhost' = 'XXXX'; - Arsen Zahray

34

如果您使用的是MySQL 5.7.6或更高版本:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

如果您使用的是MySQL 5.7.5及以下版本:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

MySQL 文档


2
我正在使用MySQL 5.7.9,奇怪的是SET PASSWORD = PASSWORD('my_pass')对我有效。有人在评论中提到,他们使用更新版本的MySQL时,这个语句也有效。尽管如此,我还是点赞了你的答案,因为你找到了MySQL文档中之前没有人提到的这个特定参考。 - Armfoot
1
MySQL 8 SET PASSWORD 抛出错误。 ALTER USER 工作正常。 - Timar Ivo Batis

17

在MySQL 5.7.x版本中,您需要切换到本机密码才能更改密码,例如:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

12

UPDATE user SET authentication_string=PASSWORD("MyPassWord") WHERE User='root'; 错误1064(42000):您的SQL语法有误;请检查与您的MySQL服务器版本相对应的手册,以了解在第1行附近使用的正确语法。

使用以下方式解决:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

以下网站提供参考:

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html


以下链接对我很有用,我还在这里找到了解释:https://serverok.in/you-must-reset-your-password-using-alter-user - ShankPossible

12

运行这些:

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'

然后运行

./mysql -u root

应该登录。现在运行FLUSH privileges;

然后退出MySQL控制台并尝试登录。如果不起作用,请运行以下命令:

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD("XXXXXXX") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

将xxxxxx更改为您的新密码。然后尝试重新登录。

更新。 请参阅http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

这应该解决您的问题。

如果您使用的是Oracle,请尝试以下方法。

ALTER USER username IDENTIFIED BY password

不好意思,这个方法也行不通了。顺便说一下,'password'列已经被Oracle重命名为authentication_string。但我无法执行此命令,因为我必须先使用ALTER USER命令更改密码。这非常令人沮丧,因为这不是传统上更新密码的方式。ALTER应该保留用于表、函数和其他内容,而不是修改表中的条目。那应该使用Update语句。(抱歉发牢骚) - dengar81
@Shivan Paw:我会预计到两个警告:mysqladmin:[警告]在命令行界面上使用密码可能不安全。警告:由于密码将以明文形式发送到服务器,因此请使用ssl连接以确保密码安全。- 我会考虑更新密码。实际上,我可以使用新密码登录。但是,我仍然无法运行任何查询,因为我需要使用ALTER USER命令更新密码:(。 - dengar81
@Shivan Paw:尝试什么?我已经尝试使用您建议的命令。使用 ./mysqladmin 命令重置密码(出现两个警告),然后继续运行 mysql.user 上的更新... 第二个命令失败,提示“您必须使用 ALTER USER [...] 重置您的密码”。 - dengar81
这是唯一对我有效的解决方案。如果你在最新版本的mysql中有一个过期的密码,它将不允许你ALTER_USER或SET_PASSWORD。 - Aaron Henderson
这个mysqladmin在我杀掉PID文件后对我有效。 - runzhi xiao

9
也许可以尝试这个?
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('XXX');

或者
SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');

根据您使用的访问方式而定。

(不确定您是否应更改自己的字段名称...)

https://dev.mysql.com/doc/refman/5.0/en/set-password.html


不好意思,这个不起作用:ERROR 1820 (HY000):在执行此语句之前,您必须使用ALTER USER语句重置密码。 - dengar81

7

使用以下命令修改用户root在本地的密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';


6
Ver 14.14 Distrib 5.7.19, for macos10.12 (x86_64)上,我使用以下命令登录: mysql -uroot -p,然后输入MySQL安装时生成的密码。然后执行以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';

例如:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab1234'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ mysql -uroot -p

您可以输入“Ab1234”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接