对于我自己的情况,没有解决方案的标准错误:
mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+。请使用管理工具使用命令SET password=password('your_existing_password')重置密码。
这将在mysql.user中存储一个新的、更安全的哈希值。如果这个用户在PHP 5.2或更早版本执行的其他脚本中使用,您可能需要从my.cnf文件[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)
Web服务器:
- Apache/2.2.31(Win32)
- 版本客户端数据库:libmysql-mysqlnd 5.0.8-dev-20102224
- PHP扩展:mysqli
UPD:旧版本的php代码可以在旧的16位代码中加密密码吗?也许这就是原因?
没有解决,但解决了-我已经用未选中的选项"以十六进制保存二进制字段"从站点源数据库导出了数据库,下载了php站点的新版本-然后编写了正确的用户和密码,所有这些都能正常工作