Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mysql password expired. Can't connect

I just wiped my Mac and did a fresh install of El Capitan. I'm struggling to connect to Mysql now. Having gone through a web server setup process, I've created a simple PHP test file:

<?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(); ?> 

When I run it, I get this error:

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. 

I've never seen that response from a connection before. How do I fix it if I can't connect?

EDIT

In terminal I entered the command:

mysql -u root -p

This asked me for my password (current one) which I put in. I now have access to mysql commands but anything I try results in this error:

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

How do I reset the password using ALTER USER?

like image 846
CaribouCode Avatar asked Oct 28 '15 09:10

CaribouCode


2 Answers

So I finally found the solution myself.

Firstly I went into terminal and typed:

mysql -u root -p

This asked for my current password which I typed in and it gave me access to provide more mysql commands. Anything I tried from here gave this error:

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

This is confusing because I couldn't actually see a way of resetting the password using ALTER USER statement, but I did find another simple solution:

SET PASSWORD = PASSWORD('xxxxxxxx');

like image 92
CaribouCode Avatar answered Oct 12 '22 13:10

CaribouCode


First, I use:

 mysql -u root -p 

Giving my current password for the 'root'. Next:

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

Change 'new_password' to a new password for the user 'root'.
It solved my problem.

like image 43
Piotr N. Avatar answered Oct 12 '22 14:10

Piotr N.