自动生成临时密码

时间:2015-10-25 04:04:01

标签: mysql macos osx-elcapitan sequelpro

我已经删除并安装了OSX 10.11 El Capitan,我一直在关注this tutorial以获得MySQL并在新的OS X上运行。第一步是下载{{3} }(适用于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.

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

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

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

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)

好的,我还尝试使用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.

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

16 个答案:

答案 0 :(得分:99)

试试这个:

mysql -u root -h 127.0.0.1 -p
Enter password: (enter the random password here)

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

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

答案 1 :(得分:39)

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

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

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

这会让您进入sandbox modemysql>提示符。然后使用SET PASSWORD设置所需的root密码:

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

答案 2 :(得分:34)

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

  1. 停止MySQL服务器。

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

    skip-grant-tables

  3. 启动MySQL服务器。

  4. 在终端中,键入

    mysql -u root -p

  5. 进入MySQL命令提示符。

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

      USE mysql;

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

      1. 输入

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

      2. 让MySQL知道密码未过期(1)或

        UPDATE user SET authentication_string = PASSWORD('YourNewPassword'), password_expired = 'N' WHERE User = 'root';
        

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

答案 3 :(得分:16)

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

考虑到你已经安装了MySQL,那么..

打开终端窗口并输入:

  1. sudo /usr/local/mysql/support-files/mysql.server stop
  2. sudo mysqld_safe --skip-grant-tables
  3. 由于在步骤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
    5. 重要:在第2步中,您必须更换密码。

      希望能为你做好准备。

答案 4 :(得分: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: Password Expiration and Sandbox Mode
MySQL: Password Expiration Policy
Password expiration policy in MySQL Server 5.7

答案 5 :(得分:4)

我正在运行macOS Sierra(10.12.3)并安装了mysql-5.7.17-macos10.12-x86_64.dmg。

@lesley的答案对我有用,除了我需要添加./以确保我在当前工作目录中调用mysql二进制文件。这是上述软件包的安装位置。

如果您cd/usr/local/mysql/bin并运行mysql -u root -p --connect-expired-password,则可能会收到以下错误消息。

mysql: unknown option '--connect-expired-password'

我做到了。因为只是在没有提供路径的情况下运行mysql,称为以前安装的MariaDB客户端版本。

因此,为了确保您执行正确的二进制文件,您可以

提供绝对路径

/usr/local/mysql/bin/mysql -u root -p --connect-expired-password

或更改目录后的相对路径

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

两种方式都应该有效。连接到客户端后,指令与@lesley上面的说明相同。

输入安装程序生成的临时密码并设置新密码。

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

答案 6 :(得分:2)

我遇到了同样的问题。我按照https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_HowTo.html的安装过程指南,下载了DMG存档并在我的MAC OS X 10.12.2上安装了MySQL。

最后在新终端上执行了以下命令。

cd /usr/local/mysql/bin

./mysql -u root -p --connect-expired-password

有效。

答案 7 :(得分:1)

答案7对我有用:{d}和自动生成的密码安装了El capitanMySQL,但在进入cd之前确保/usr/local/bin/mysql./mysql -root -p明显,但我不是第一次。

现在找到我的所有数据库和表格以及如何链接它们。

答案 8 :(得分:1)

对于Mysql 5.7,我使用

  

shell $> sudo grep'临时密码'/var/log/mysqld.log

答案 9 :(得分:1)

这个特别的人为我做了诀窍:

如此链接中所述:https://www.variphy.com/kb/mac-os-x-reset-mysql-root-password

执行除执行

之外的所有步骤
    UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root';

执行

    UPDATE mysql.user
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';

然后执行         FLUSH PRIVILEGES;

答案 10 :(得分:0)

解决此问题的另一种方法是使用旧版本的MySQL。

我已经为Mac OS X 10.9(x86,64位),DMG Archive卸载了MySQL version 5.7.9,然后为Mac OS X 10.9(x86,64位)安装了旧版本MySQL version 5.6.7 ,DMG档案。这个问题解决了。在完成此旧版本的安装之前给定的自动生成的密码已经消失,我最终可以使用root作为用户名和空白密码来访问数据库。一切都像魅力一样!

答案 11 :(得分:0)

我安装了查看brew,我收到了同样的错误消息,直到我注意到这个警告:

  

我们安装了没有root密码的MySQL数据库。为了确保它运行:       mysql_secure_installation

     

连接运行:       mysql -uroot

     

现在启动mysd启动mysql并在登录时重启:     brew服务启动mysql

     

或者,如果您不想/需要后台服务,您可以运行:     mysql.server启动

答案 12 :(得分:0)

我通过跑步解决了这个问题     'mysql -u root -p --connect-expired-password' 然后从mysql输入过期的自动生成密码。终于搞定了。选择了mysql db with     'use mysql' 然后使用更新用户'root'pw     'ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password'

答案 13 :(得分:0)

首次通过下载软件包手动安装MySQL会为root生成默认密码。复制并保存。如果在连续重新安装时没有以某种方式完成,则不会显示该密码。

因此您无法登录root。 执行以下操作:

  1. 从系统中查找与mysql相关的条目 sudo find / -name mysql
  2. 通过执行rm -rf <mysql_entries_above>
  3. 删除所有与mysql相关的条目
  4. 下载最新的mysql-server并安装它。
  5. 您将获得一个需要复制的默认密码。
  6. 运行mysql_secure_installation并在询问root时粘贴该密码。
  7. 随后按照步骤操作,并在提示时更改管理员密码。

答案 14 :(得分:0)

重启Mysql服务器对我有用。

答案 15 :(得分:-1)

当您之前安装了mysql时,可能会发生这种情况。 尝试为上一个mysql版本设置的密码。 这确实对我有用。