Mysql密码过期。 无法连接

我刚刚擦掉了我的Mac,并重新安装了El Capitan。 我正努力地连接到Mysql。 通过Web服务器安装过程,我创build了一个简单的PHPtesting文件:

<?php $conn = new mysqli("127.0.0.1", "root", "xxxxxxxx"); if ($conn->connect_error) echo "Connection failed: " . $conn->connect_error; else echo "Connected successfully"; phpinfo(); ?> 

当我运行它时,我得到这个错误:

 Warning: mysqli::mysqli(): (HY000/1862): Your password has expired. To log in you must change it using a client that supports expired passwords. in /Users/rich/Documents/DESIGN/test/index.php on line 3 Connection failed: Your password has expired. To log in you must change it using a client that supports expired passwords. 

我从来没有见过这个连接的回应。 如果我无法连接,我该如何解决?

编辑

在terminal我input了命令:

mysql -u root -p

这就要求我input密码(当前的密码)。我现在可以访问mysql命令,但是我尝试的结果是这个错误:

 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

如何使用ALTER USER重置密码?

所以我终于find了自己的解决scheme。

首先,我进入terminal,键入:

mysql -u root -p

这要求我input的当前密码,它使我能够提供更多的mysql命令。 我从这里尝试的任何东西都给出了这个错误:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

这是令人困惑的,因为我实际上看不到使用ALTER USER语句重置密码的方法,但是我find了另一个简单的解决scheme:

SET PASSWORD = PASSWORD('xxxxxxxx');

首先,我使用:

  mysql -u root -p 

给我的当前密码的“根”。 下一个:

 mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER; 

'new_password'更改为用户“root”的新密码。
它解决了我的问题。

mysqladmin -u [username] -p password在OS X El Capitan和MySQL 5.7.12社区服务器上为我工作。 例:

 $ /usr/local/mysql/bin/mysqladmin -u root -p password Enter password: New password: Confirm new password: Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety. 

这与pavan sachi的答案类似,但是有密码提示。

我的错误是“#1862 – 您的密码已过期。要login,您必须使用支持过期密码的客户端进行更改。 第一次在phpMyAdminlogin屏幕。

我最近在mac os x capitan上安装mysql时遇到了同样的问题。 我没有在这里find正确的答案,所以添加这个答案。

当前版本的MySql在安装mysql时会生成一个临时密码。 使用此密码使用下面的mysqladmin实用程序设置一个新密码;

/ usr / local / mysql / bin / mysqladmin -u root -p'<你的临时密码>'密码'<你的新密码>'

希望它可以帮助你和其他人。

MySQL密码到期

重置密码只能暂时解决问题。 从MySQL 5.7.4到5.7.10(为了鼓励更好的安全性 – 请参阅MySQL:密码过期策略 ),默认的default_password_lifetimevariables值是360(1 year-ish)。 对于这些版本,如果您不更改此variables(或个人用户帐户), 所有密码将在360天后过期。

所以从一个脚本中你可能会得到这样的信息:“你的密码已经过期了。要login,你必须使用支持过期密码的客户端来更改它。

要停止自动密码过期,请以root身份login( mysql -u root -p ),然后对于自动连接到服务器的客户端 (例如脚本)更改密码过期设置:

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

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

SET GLOBAL default_password_lifetime = 0;

正如Mertaydin在评论中指出的那样,为了使这个永久性的添加下面一行到my.cnf文件中,MySQL在启动时读取的是在[mysqld]组的设置下。 my.cnf的位置取决于您的设置(例如,Windows或OS X上的Homebrew或安装程序),以及是否希望在Unix或全局上使用此用户:

[mysqld] default_password_lifetime = 0 (这里也可能有其他设置…)

查看configuration文件中的MySQL文档 。

只需下载MySQL工作台即可login。它将提示您立即自动更改密码。

以安全模式启动MYSQL

 mysqld_safe --skip-grant-tables & 

连接到MYSQL服务器

 mysql -u root 

运行SQL命令重置密码:

 use mysql; SET GLOBAL default_password_lifetime = 0; SET PASSWORD = PASSWORD('new_password'); 

最后一步,重新启动你的mysql服务

我前几天面对这个问题。 为了5.7版本的MySQL的最佳解决scheme; login你的mysql控制台并使用以下命令修改你的密码:

 ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER; 

密码到期是MySQL 5.6或5.7中的一项新function。

答案很清楚:使用一个能够过期更改密码的客户端(我认为Sequel Pro可以做到这一点)。

MySQLi库显然不能改变过期的密码。

如果您对本地主机的访问权限有限,并且您只有一个控制台客户端,则标准的mysql客户端可以执行此操作。

使用–skip-grant-tables选项重新启动MySQL服务器然后设置一个新的root密码

 $ mysql -u root mysql> USE mysql; mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> quit 

现在,如果你需要,你可以更新mysql.user表(字段password_expired ='N')不要过期密码。

所有这些答案都使用Linux控制台来访问MySQL。

如果您使用的是Windows并且正在使用WAMP,则可以通过打开MySQL控制台( click WAMP icon->MySQL->MySQL console )来启动。

然后它会要求你input你当前的密码,input它。

然后inputSET PASSWORD = PASSWORD('some_pass');

最简单的解决scheme

 [PATH MYSQL]/bin/mysql -u root [Enter password] SET GLOBAL default_password_lifetime = 0; 

然后工作正常。

打开MySQL控制台并inputSET PASSWORD ='您的密码'; 然后按ENTER键,它将为root用户设置您定义的密码。

你只能写SET PASSWORD =''; 这将为root用户设置密码为空白。

这对我工作:

ALTER USER'root'@'localhost'IDENTIFIED BY'yourpassword','root'@'localhost'密码永远不会出现;