我有一个在几个系统上使用的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了表的值是有效的。 用手动的方式,你很容易把无效的数据存入用户表中。