错误:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+

use*_*853 23 php mysql sql database database-connection

我收到以下错误:

数据库连接失败:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+.请使用管理工具使用该命令重置密码SET PASSWORD = PASSWORD('your_existing_password').

这将存储一个新的,更安全的哈希值mysql.user.如果在PHP 5.2或更早版本执行的其他脚本中使用此用户,则可能需要从my.cnf文件中删除旧密码标志

我在我的本地机器上使用PHP 5.3.8和MySQL 5.5.16,我的主机(media temple)运行PHP 5.3 MySQL 5.0.51a.实时服务器上的版本比我机器上的版本旧.

如何修复此错误并从本地计算机连接到MySQL?

我知道这个帖子有类似的帖子,但是我已经尝试了所有这些帖子,但没有一个在工作.

Ram*_*nov 40

  • 在my.cnf中删除或评论old_passwords = 1

重启MySQL.如果不这样做,MySQL将继续使用旧的密码格式,这意味着您无法使用内置的PASSWORD()散列函数升级密码.

旧密码哈希值为16个字符,新的密码为41个字符.

这将显示哪些密码采用旧格式,例如:

+----------+--------------------+
| user     | Length(`Password`) |
+----------+--------------------+
| root     |                 41 |
| root     |                 16 |
| user2    |                 16 |
| user2    |                 16 |
+----------+--------------------+

请注意,每个用户可以有多行(每个不同的主机规范一个).

要更新每个用户的密码,请运行以下命令:

UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
Run Code Online (Sandbox Code Playgroud)

最后,刷新权限:

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

来源:如何在PHP5.3上修复"mysqlnd无法使用旧身份验证连接到MySQL 4.1+"