mysql_connect():服务器请求的身份验证方法对于客户端 [mysql_old_password] 未知

mysql_connect():服务器请求的身份验证方法对于客户端 [mysql_old_password] 未知

我正在尝试运行 PHP 5.4.1(从源代码编译),但是当我尝试连接 mysql 时,我得到:

Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in

使用 PHP 5.3/5.2 时,它可以正常工作。您知道是什么原因导致了这个问题吗?

答案1

尝试阅读一下:关联

MySQL 在(我认为)4.1 版中引入了更长的密码哈希,您的服务器可能仍在使用它们(检查 mysql 用户表中的 16 字节密码哈希)。较新的版本使用更长的密码哈希。您的服务器支持这两种哈希,但您的客户端(php)似乎只支持此版本(及以后)中的新哈希。

如果可能的话,请使用第一行链接中的解决方案,并使用新哈希重新设置密码,但请注意,如果您使用任何其他依赖旧密码的(旧)客户端,兼容性可能会中断。还可以尝试在 PHP 中寻找对 MySQL 的旧密码支持,但我对此不确定。

答案2

ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';

答案3

我知道这是一个老话题,但我解决了这个问题,而不必升级/降级任何东西。基本上,我在 my.cnf 文件中注释掉了 old_passwords=1 行,重新启动了 mysql,添加/修改了最终获得 16 字节哈希的用户,然后我返回并取消注释 old_passwords=1 行,并重新启动了 mysql。所以基本上:

  • 评论旧密码=1
  • 重启 mysql
  • 添加/修改用户
  • 取消注释 old_passwords=1
  • 重启 mysql

所以,结果如下:1 个用户使用新密码类型,而其他用户使用旧密码类型。每个人都可以登录! ;)

答案4

我在尝试升级 mediawiki 安装时也收到类似的消息。我使用 Netfirms 作为托管服务提供商,我通过登录控制面板、进入 MySQL 区域并更改 mediawiki 使用的数据库解决了此问题。然后我就可以继续进行 mediawiki 升级了。

相关内容