我收到以下错误:
数据库连接失败:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+。请使用管理工具通过命令重置密码SET PASSWORD = PASSWORD('your_existing_password')。 这将在中存储一个新的,更安全的哈希值mysql.user。如果此用户在PHP 5.2或更早版本执行的其他脚本中使用,则可能需要从my.cnf文件中删除old-passwords标志
数据库连接失败:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+。请使用管理工具通过命令重置密码SET PASSWORD = PASSWORD('your_existing_password')。
SET PASSWORD = PASSWORD('your_existing_password')
这将在中存储一个新的,更安全的哈希值mysql.user。如果此用户在PHP 5.2或更早版本执行的其他脚本中使用,则可能需要从my.cnf文件中删除old-passwords标志
mysql.user
my.cnf
我在本地计算机上使用PHP 5.3.8和MySQL 5.5.16,并且我的主机(媒体寺庙)正在运行PHP 5.3 MySQL 5.0.51a。实时服务器上的版本比我计算机上的版本旧。
如何解决此错误并从本地计算机连接到MySQL?
我知道也有与此类似的帖子,但是我已经尝试了所有帖子,但都没有工作。
重新启动MySQL。如果不这样做,MySQL将继续使用旧的密码格式,这意味着您无法使用内置的PASSWORD()散列函数来升级密码。
旧密码哈希值为16个字符,新密码哈希值为41个字符。
SELECT user, Length(`Password`) FROM `mysql`.`user`;
这将向您显示哪些密码是旧格式,例如:
+ ---------- + -------------------- + | 用户| 长度(`密码`)| + ---------- + -------------------- + | 根| 41 | | 根| 16 | | user2 | 16 | | user2 | 16 | + ---------- + -------------------- +
请注意,每个用户可以有多行(每个不同的主机规范对应一行)。
要更新每个用户的密码,请运行以下命令:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
最后,刷新特权:
FLUSH PRIVILEGES;
来源:如何在PHP5.3上修复“ mysqlnd无法使用旧认证连接到MySQL 4.1+”