错误:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+
我收到以下错误:
数据库连接失败:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+。请使用管理工具通过命令重置密码
SET PASSWORD =
PASSWORD('your_existing_password')。
这将在中存储一个新的,更安全的哈希值
mysql.user
。如果此用户在PHP5.2或更早版本执行的其他脚本中使用,则可能需要从
my.cnf
文件中删除old-passwords标志
我在本地计算机上使用PHP 5.3.8和MySQL 5.5.16,并且我的主机(媒体寺庙)正在运行PHP 5.3 MySQL
5.0.51a。实时服务器上的版本比我计算机上的版本旧。
如何解决此错误并从本地计算机连接到MySQL?
我知道也有与此类似的帖子,但是我已经尝试了所有帖子,但都没有工作。
回答:
- 在my.cnf中删除或评论old_passwords = 1
重新启动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+”
以上是 错误:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+ 的全部内容, 来源链接: utcz.com/qa/412367.html