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


183

我是整个Mac体验的新手。我最近安装了MySQL,看来安装后必须重置密码。它不会让我做任何其他事情。

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

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

(顺便说一句:我花了很长时间才得出结论,由于某种奇怪的原因,MySQL将字段“ password”重命名为“ authentication_string”。我对这样的更改感到很沮丧。)

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

Answers:


507

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

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


10
谢谢!来自MySQL的非常令人困惑的错误消息!
Ed。

1
这对我 mysql-5.7.13-osx10.11-x86_64
有用

1
在'mysql> SET PASSWORD = PASSWORD('your_new_password');'之后,我得到以下错误:'ERROR 29(HY000):File'./mysql/user.MYD'not found(Errcode:2-No such文件或目录)”。有人能帮我吗 ?
雷金

4
您会注意到,与MySQL的建议相反,您不使用“ ALTER USER”语句,而只是使用“ SET PASSWORD” ...
Fabien Haddadi

1
第一个示例可能会尝试为提交该行时使用的用户设置另一个密码。第二种尝试为您用于登录mysql的用户设置密码。因此,后来的作品。
Hafenkranich

130

如果您使用启动了mysql mysql -u root -p

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

资料来源:http : //dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


1
谢谢!这对我有用!我正在使用mysql-5.7.11-osx10.10-x86_64。
-LeArNr

这行得通;谢谢!令我深感难过的是,即使MySQL是一个使用广泛的程序,也没有一站式文档可以安装和快速运行。
Shatu

谢谢 !它帮助了我
Sparw '17

3
经过无奈后,它的变体在薄荷18 mysql 5.7.18上工作:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
史蒂夫(Steve)

一百万谢谢。那是唯一对我有用的东西。
RandyMy

33

我在Mac上也有同样的问题

首先,以沙盒模式登录mysql

mysql -u <user> -p --connect-expired-password

然后,设定密码

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

Query OK, 0 rows affected, 1 warning (0.01 sec)

对我有用〜

通过:https : //dba.stackexchange.com/questions/118852/your-paswssword-has-expired-after-restart-mysql-when-updated-mysql-5-7-8-rcde


1
记住非常复杂,要记住甚至在使用数据库之前都必须这样做。
seba.wagner '16

在警告您要使用它时SET PASSWORD FOR 'root'@'localhost' = 'XXXX';
Arsen Zahray'1

22

如果您使用MySQL 5.7.6及更高版本:

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

如果您使用MySQL 5.7.5和更早版本:

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

MySQL文档


1
我正在使用MySQL 5.7.9,但奇怪的事情SET PASSWORD = PASSWORD('my_pass')对我有用。有些人的评论使用的是最新版本,其中提到该语句也适用于他们。尽管如此,由于您在MySQL文档中找到了这一特定参考,因此我对您的回答表示赞同,此前没有人提到过。
Armfoot

MySQL 8 SET PASSWORD抛出并出错。ALTER USER工作了。
Timar Ivo Batis


11

运行这些:

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

然后跑

./mysql -u root

它应该登录。现在运行FLUSH特权;

然后退出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

不,对不起,这也不起作用。至少现在没有了。Oracle已将“ password”列重命名为btw。现在称为authentication_string。但是我无法执行此命令,因为我首先必须使用ALTER USER命令更改密码。令人难以置信的令人沮丧,因为这不是您传统上更新密码的方式。应该为表,函数和内容保留ALTER,而不更改表中的条目。那就是Update语句。(抱歉咆哮)
dengar81

@Shivan Paw:我希望得到两个警告:mysqladmin:[警告]在命令行界面上使用密码可能是不安全的。警告:由于密码将以纯文本格式发送到服务器,因此请使用ssl连接以确保密码安全。-我认为密码已更新。实际上,我可以使用新密码登录。但是,我还是不能运行任何疑问,因为我需要更新与ALTER USER命令:(密码。
dengar81

@Shivan Paw:尝试什么?我已经尝试使用您建议的命令。使用./mysqladmin命令重置密码(两个警告),然后继续在mysql.user上运行更新...第二个命令失败,并显示消息“您必须使用ALTER USER [...]重置密码”
dengar81 2015年

这是唯一对我有用的解决方案。如果您在最新版本的mysql中拥有过期密码,则不会允许您使用ALTER_USER或SET_PASSWORD。
亚伦·亨德森



7

更新用户SET authentication_string = PASSWORD(“ MyPassWord”),其中User ='root'; 错误1064(42000):您的SQL语法有错误;在第1行的'(“” MyPassWord“)WHERE User ='root'附近使用相应的语法,查看与您的MySQL服务器版本相对应的手册

解决了

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

来自以下网站的参考

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


5

在上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”


3

MySQL 5.7.24获得root首次登录

步骤1:从日志获取密码

 grep root@localhost /var/log/mysqld.log
    Output
        2019-01-17T09:58:34.459520Z 1 [Note] A temporary password is generated for root@localhost: wHkJHUxeR4)w

步骤2:和他一起登录mysql

mysql -uroot -p'wHkJHUxeR4)w'

步骤3:输入新的root密码

SET PASSWORD = PASSWORD('xxxxx');

你得到 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

如何解决?

运行这个 SET GLOBAL validate_password_policy=LOW;

再试一次 SET PASSWORD = PASSWORD('xxxxx');



2

这是为我工作的方式。

mysql> show databases ;

错误1820(HY000):在执行此语句之前,必须使用ALTER USER语句重置密码。

mysql> uninstall plugin validate_password;

错误1820(HY000):在执行此语句之前,必须使用ALTER USER语句重置密码。

mysql> alter user 'root'@'localhost' identified by 'root';

查询正常,受影响的0行(0.01秒)

mysql> flush privileges;

查询正常,受影响的0行(0.03秒)


1

使用SET PASSWORD = PASSWORD('your_new_password');时可能会崩溃

(错误1819(HY000):您的密码不符合当前的策略要求)

您可以SET GLOBAL validate_password_policy=LOW;用来解决它。


1

在5.7版本中。“密码”字段已删除。'authentication_string'替换它

use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;

0

我在Mac OS X 10.10.4(Yosemite)中也遇到了同样的问题。SET PASSWORD对我有用。mysql的更改密码-mysql> SET PASSWORD = PASSWORD('your_password'); 查询正常,影响0行,1警告(0.01秒)

在.bash_profile中设置Mysql环境路径变量,并添加以下行
export PATH = $ PATH:/ usr / local / mysql / bin,之后,运行以下命令:source .bash_profile


0

在安装mysql工作台和mysql社区服务器后出现了问题。在服务器安装过程中获得了生成的密码。双击工作台中现有的本地实例会触发一个对话框,我可以在其中设置新密码。


0

mysql> SET PASSWORD = PASSWORD('your_new_password'); 这对我行得通。


0

请记住版本5.7.23及更高版本-用户表中没有列密码,而是身份验证字符串,因此在为用户重置密码时,以下内容适用。

update user set authentication_string=password('root') where user='root';
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.