";不能使用旧的不安全认证进行连接”;但我没有旧密码


"cannot connect using the old insecure authentication" but I have no old passwords?

对于我自己的情况,没有解决方案的标准错误:

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站点的新版本-然后编写了正确的用户和密码,所有这些都能正常工作