自动生成临时密码后无法访问MySQL

Che*_*dae 64 mysql macos sequelpro osx-elcapitan

我已经删除并安装了OSX 10.11 El Capitan,我一直在通过本教程MySQL启动并运行新的OS X.第一步是下载MySQL For Mac OS X 10.9(x86,64位),DMG Archive(适用于10.11) ,他们在教程中推荐).当我完成安装MySQL时,我收到消息说:

2015-10-25T02:10:54.549219Z 1 [Note] A temporary password is generated for root@localhost: R>gFySuiu23U

If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.
Run Code Online (Sandbox Code Playgroud)

这很奇怪,我从未见过那种消息.之后,我通过Preference Pane启动了MySQL,然后/usr/local/mysql/bin/mysql -v在终端上使用命令进行另一步.我收到一条错误消息说:

ERROR 1045 (28000): Access denied for user 'cheetah'@'localhost' (using password: NO)

我也尝试通过Sequel Pro使用root作为用户名和空密码来访问数据库,我得到访问被拒绝消息说:

Unable to connect to host 127.0.0.1 because access was denied.

Double-check your username and password and ensure that access from your current location is permitted.

MySQL said: Access denied for user 'root'@'localhost' (using password: NO)
Run Code Online (Sandbox Code Playgroud)

好的,我还尝试使用root作为用户名,但是'R> gFySuiu23U'作为密码(由MySQL生成).我收到连接失败的消息说:

Unable to connect to host 127.0.0.1, or the request timed out.

Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).

MySQL said: Your password has expired. To log in you must change it using a client that supports expired passwords.
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?我记得MySQL从来没有像这样自动生成临时密码,不是吗?

Kum*_*tin 103

试试这个:

mysql -u root -h 127.0.0.1 -p
Enter password: (enter the random password here)
Run Code Online (Sandbox Code Playgroud)

参考:https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html

在此之后,您可以使用重置密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password';

  • 这不适合我.我收到消息"访问被拒绝用户'root'@'localhost'(使用密码:YES)`无论我做什么 (36认同)
  • 您应该使用临时的自动生成密码,而不是随机密码.为我工作(OSX,MySQL 5.7.9,全新安装) (5认同)
  • Mac上的MySQL是疯狂的用户体验.我通过DMG安装它,生成密码.我启动它虽然设置...尝试连接,密码已过期,wtf ..尝试重置它.```访问被拒绝用户'root'@'localhost'(使用密码:YES)```多么浪费空间. (5认同)
  • 使用自动生成的密码对我不起作用-它显示“错误1862(HY000):您的密码已过期。要登录,必须使用支持过期密码的客户端对其进行更改。” - - - - 我生气了!!!! (2认同)

Les*_*ley 40

这对于运行MySql v5.7的OS X Yosemite(从.dmg安装)起了作用.

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password
Run Code Online (Sandbox Code Playgroud)

(输入安装程序生成的临时密码.)

这会让您进入沙箱模式mysql>提示.然后使用SET PASSWORD设置所需的root密码:

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

  • @LZH请参阅我的答案中的沙箱模式链接,其中记录了--connect-expired-password (2认同)

Ant*_*rov 34

既然MySQL生成的密码已过期,问题就会减少,以使此密码再次起作用(1)或生成新密码(2).这可以通过使用skip-grant-tables选项运行MySQL来实现,这将使其忽略访问权限:

  1. 停止你的MySQL服务器.

  2. 在my.cnf文件的[mysqld]部分的末尾添加以下内容并保存.

    skip-grant-tables

  3. 启动MySQL服务器.

  4. 在终端中,键入

    mysql -u root -p

进入MySQL命令提示符.

  1. 在命令提示符下,键入

    USE mysql;

进入保存数据库用户的mysql数据库.

  1. 类型

    UPDATE user SET password_expired = 'N' WHERE User = 'root';

让MySQL知道密码没有过期(1)或

UPDATE user SET authentication_string = PASSWORD('YourNewPassword'), password_expired = 'N' WHERE User = 'root';
Run Code Online (Sandbox Code Playgroud)

将新密码YourNewPassword分配给root(2).


Mar*_*elo 16

在OSX 10.11 El Capitan和MySQL 5.7.X下执行这些步骤应该可以解决问题.

考虑到你已经安装了MySQL然后..

打开终端窗口并键入:

  1. sudo /usr/local/mysql/support-files/mysql.server停止
  2. sudo mysqld_safe --skip-grant-tables

由于在步骤2中触发的命令将处于运行状态,因此您需要打开另一个终端窗口,然后键入:

  1. mysql -u root -p
  2. UPDATE mysql.user SET password_expired ='N',authentication_string = PASSWORD('')WHERE User ='root';
  3. 放弃;
  4. sudo /usr/local/mysql/support-files/mysql.server restart

重要提示:在步骤2中,您必须更换密码.

希望它会为你而生.


Dav*_*itt 5

MySQL密码已过期

重置密码将暂时解决问题,但是,从MySQL 5.7.4到5.7.10(我认为鼓励更好的安全性)default_password_lifetime变量的默认值是360(大约一年).对于这些版本,如果您未对此变量(或单个用户帐户)进行任何更改,则所有用户密码将在360天后过期.

通常,从脚本中您可能会收到消息:"您的密码已过期.要登录,您必须使用支持过期密码的客户端进行更改."

因此,为防止自动密码过期,请以root(mysql -u root -p)身份登录,然后,对于自动连接到服务器的客户端(例如脚本),请更改这些客户端的密码过期设置:

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;

或者您可以为所有用户禁用自动密码过期:

SET GLOBAL default_password_lifetime = 0;

链接:

MySQL:密码过期和沙盒模式
MySQL:密码过期策略
MySQL Server 5.7中的密码过期策略