PHP5.3 and Mysqlnd authentication issue

Upgrading a system is always fun and full of headaches, my last one was with the new mysqlnd extension from php 5.3. I cannot manage to connect to mysql from symfony.

I always get:

SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using old authentication

After struggling a while on google, I cannot find any solution. So I went back to the RTFM idiomatic expression.

It is what I found:

  • php 5.3 now use a native extension to use mysql : mysqlnd
  • my database credential was old (4 years old maybe) and still use the old mysql authentication
  • mysqlnd needs the new 41bytes password

So the problem was easy to solve, just reset the user’s password.

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

References: