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

时间:2015-11-01 21:18:20

标签: mysql macos

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

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

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

(顺便说一下:我花了很长时间才发现MySQL出于某种奇怪的原因将字段'密码'重命名为'authentication_string'。我对此类变化感到非常沮丧。)

不幸的是,我似乎需要以不同的方式更改密码。也许有人在这里遇到过这个问题?

20 个答案:

答案 0 :(得分:447)

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

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

mysql> SET PASSWORD = PASSWORD('your_new_password');
  

查询正常,0行受影响,1警告(0.01秒)

这是我找到答案的地方:https://dev.mysql.com/doc/refman/5.6/en/alter-user.html

答案 1 :(得分:106)

如果您使用mysql -u root -p

启动了mysql

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

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

答案 2 :(得分:32)

我在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)

对我有用〜

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

答案 3 :(得分:12)

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

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

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

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

MySQL Documentation

答案 4 :(得分:9)

运行这些:

$ 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

答案 5 :(得分:9)

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

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

答案 6 :(得分:7)

ALTER USER&#39; root&#39; @&#39; localhost&#39;通过&#39; new_password&#39;;

识别

使用此行...

答案 7 :(得分:7)

也许试试?

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

答案 8 :(得分:4)

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'

答案 9 :(得分:4)

UPDATE用户SET authentication_string = PASSWORD(“ MyPassWord”)WHERE 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/en/resetting-permissions.html

答案 10 :(得分:2)

这对我有用:

ALTER USER USER()通过&#39; auth_string&#39;;

识别

我在这里找到了: http://dev.mysql.com/doc/refman/5.7/en/alter-user.html#alter-user-current

答案 11 :(得分:2)

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');

答案 12 :(得分:1)

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

  

(ERROR 1819(HY000):您的密码不符合当前政策   的要求)

。您可以使用SET GLOBAL validate_password_policy=LOW;来解决问题。

答案 13 :(得分:1)

这是为我工作的方式。

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秒)

答案 14 :(得分:1)

5.7版本中的

。 “密码”字段已删除。 'authentication_string'替换它

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

我在mac OS X 10.10.4(优胜美地)也遇到了同样的问题.SET PASSWORD为我工作。更改mysql的密码 - MySQL的&GT; SET PASSWORD = PASSWORD(&#39; your_password&#39;); 查询正常,0行受影响,1警告(0.01秒)

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

答案 17 :(得分:0)

1 对我有用。

答案 18 :(得分:0)

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

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

答案 19 :(得分:0)

在 mysql 5.7.x(replication) 中,此问题可能发生,因为从属用户上的密码不匹配或主用户上不存在 root 用户。

例如(就我而言):

我创建了一个实例,更改了 root 的密码,在复制从属之前,我删除了 root 用户。当我创建从属实例时,此警报出现在查询中:(因为我在删除 root 用户之前更改了 master 上的密码,而从属正在从第一个日志中读取,这实际上是一个更改 root 用户语句)

show slave status\G

这里有两种解决方案可以应用:

  1. 您可以使用相同的密码在主主机和从主机上创建 root 用户
  2. 您可以在主主机上运行查询reset master;

并重新连接从设备到主设备。