【发布时间】:2015-10-31 10:01:13
【问题描述】:
标准错误,我自己的情况没有解决方案:
mysqlnd 无法使用旧的不安全身份验证连接到 MySQL 4.1+。请使用管理工具通过命令 SET PASSWORD = PASSWORD('your_existing_password') 重置密码。
这将在 mysql.user 中存储一个新的、更安全的哈希值。如果此用户在 PHP 5.2 或更早版本执行的其他脚本中使用,您可能需要从 my.cnf 文件中删除 old-passwords 标志 [2000]
我已经用谷歌搜索了很多,尝试了不同的建议,但我现在仍然不知道该尝试什么,因为我在 MySQLManager 中进行了这样的查询:
SELECT LENGTH(Password) FROM mysql.user;
show variables like 'old_passwords';
我得到了这样的答案:
LENGTH(Password)
41
41
41
old_passwords: OFF
这似乎是密码的正确哈希方法(不是 16),正确的 old_password 值(OFF),但我无法修复错误,甚至不知道我应该尝试什么。 我使用 OpenServer 5.2.2,与:
数据库服务器:
- 服务器:127.0.0.1 通过 TCP/IP
- 服务器类型:MySQL
- 服务器版本:5.5.45 - MySQL 社区服务器 (GPL)
- 协议版本:10
- 用户:max@localhost
- 服务器编码:UTF-8 Unicode (utf8)
网络服务器:
- Apache/2.2.31 (Win32)
- 版本客户端数据库:libmysql - mysqlnd 5.0.8-dev - 20102224
- PHP 扩展:mysqli
UPD:旧版本的 php 代码可以用旧的 16 位代码加密密码吗?也许是这个原因?
【问题讨论】:
-
你使用 MySQLManager 的用户是否有创建用户和授予权限的权限?
-
是的,他拥有“所有特权”