不能再通过PHP访问MySQL

我有一个在几个系统上使用的mySQL / PHP设置。 我刚刚将我的系统升级到Max OSX 10.6,现在无法连接。 我得到的错误:

mysqlnd无法使用旧authentication连接到MySQL 4.1+

我已经做了明显的谷歌search,但其中大部分似乎都是如何让MySQL使用旧的密码风格,这似乎将不再工作。 在任何情况下,我想find一个更好的解决scheme,使我可以使用新的密码风格。

我创build我的密码:

mysql> UPDATE mysql.user SET Password=PASSWORD('mypassword') WHERE User='root'; 

(或OLD_PASSWORD,这似乎并不重要)

我login到数据库中:

 @mysql_connect($mysqlserver,$username,$password) where $username is root and $password="mypassword" 

什么是正确的解决这个问题,因为迫使它继续使用旧的密码技术显然不是正确的解决scheme…

哦,我是个白痴。 当我用PASSWORD(“password”)手动重新设置root密码时,我没有以同样的方式重新设置USERS密码,所以用户密码仍然是OLD_PASSWORD(“password”),我们的PHP以用户,而不是根(我想这是一件好事)。

我手动重新设置用户密码与PASWORD(“密码”),一切似乎工作…

当你重置密码是你在安全模式下运行MySQL? 我知道有时候mysql会重置root的密码。 试试这个post,如果你还没有… 如何伪造

尝试在my.cnf启用old_passwords = true 。 应该帮忙;)

手动播放这些表之后,请确保执行FLUSH PRIVILEGES,以便MySQL读取新的值。

一般来说,最好使用SET PASSWORD来更改密码,因为这validation了表的值是有效的。 用手动的方式,你很容易把无效的数据存入用户表中。