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

den*_*r81 175 mysql macos

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

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

update user set password = password('XXX') where user = root;
Run Code Online (Sandbox Code Playgroud)

(顺便说一句:由于某些奇怪的原因,我花了很多时间才发现MySQL将字段"密码"重命名为"authentication_string".我对此类变化感到非常沮丧.)

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

Mad*_*int 481

mysql> UPDATE mysql.user SET Password=PASSWORD('your_new_password')
           WHERE User='root'; 
Run Code Online (Sandbox Code Playgroud)

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

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 
Run Code Online (Sandbox Code Playgroud)

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


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

  • 谢谢!来自MySQL的非常令人困惑的错误消息! (9认同)
  • 您会注意到,与MySQL建议的相反,您不使用"ALTER USER"语句,而只是"SET PASSWORD"... (3认同)

小智 115

如果你开始使用mysql mysql -u root -p

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

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

  • 在经历了很多挫折之后,这个变体在 mint 18 mysql 5.7.18 上工作:`ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';` (5认同)

Ezi*_*iki 32

我在Mac上遇到同样的问题

首先,使用沙箱模式登录mysql

mysql -u <user> -p --connect-expired-password
Run Code Online (Sandbox Code Playgroud)

然后,设置密码

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

Query OK, 0 rows affected, 1 warning (0.01 sec)
Run Code Online (Sandbox Code Playgroud)

它对我有用〜

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


小智 16

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

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Run Code Online (Sandbox Code Playgroud)

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

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Run Code Online (Sandbox Code Playgroud)

MySQL文档

  • 我正在使用 MySQL 5.7.9,奇怪的是 `SET PASSWORD = PASSWORD('my_pass')` 对我有用。有最新版本的人在评论中提到这个声明对他们也有效。尽管如此,我还是对你的答案投了赞成票,因为你在 MySQL 文档中发现了这个特定的参考文献,而之前没有人提到过。 (2认同)

小智 11

运行这些:

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'
Run Code Online (Sandbox Code Playgroud)

然后跑

./mysql -u root
Run Code Online (Sandbox Code Playgroud)

它应该登录.现在运行FLUSH权限;

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

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

将xxxxxx更改为新密码.然后尝试再次登录.

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

它应该解决你的问题.

如果你在oracle上试试这个

ALTER USER username IDENTIFIED BY password
Run Code Online (Sandbox Code Playgroud)


小智 9

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

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
Run Code Online (Sandbox Code Playgroud)


小智 7

也许尝试一下?

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('XXX');
Run Code Online (Sandbox Code Playgroud)

要么

SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');
Run Code Online (Sandbox Code Playgroud)

取决于您使用的访问权限.

(并且不确定你应该更改自己的字段名称......)

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


Man*_*era 7

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

使用这一行......


Sid*_*dey 6

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

解决了

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Run Code Online (Sandbox Code Playgroud)

来自以下网站的参考

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


Ken*_*ris 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”


小智 5

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
Run Code Online (Sandbox Code Playgroud)

步骤2:用他登录mysql

mysql -uroot -p'wHkJHUxeR4)w'
Run Code Online (Sandbox Code Playgroud)

第 3 步:输入新的 root 密码

SET PASSWORD = PASSWORD('xxxxx');
Run Code Online (Sandbox Code Playgroud)

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

如何修复它?

运行这个 SET GLOBAL validate_password_policy=LOW;

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