MySQLI_Real_Connect()-客户端警告未知的身份验证方法

时间:2014-11-23 作者:Howdy_McGee

我在调试日志中不断收到以下警告:

PHP Warning:     mysqli_real_connect(): The server requested authentication method unknown to the client [mysql_old_password] in /wp-includes/wp-db.php on line 1379
PHP Warning:     mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client in /wp-includes/wp-db.php on line 1379
PHP Deprecated:  mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /wp-includes/wp-db.php on line 1409
我一遍又一遍地运行以下设置:

PHP       - 5.5.6
MYSQL     - 5.5.38
WordPress - 4.0.1
我所有的插件都是最新的,以前没有使用过的插件不多,而且这个问题似乎只发生在这个主机上,所以我排除了插件。我查过这个问题,但我不明白任何答案到底在说什么:

MYSQL PHP Incompatibility

Need help sorting out mysql permisions and connections

听起来像是某个用户输入的密码太长而无法散列?如果是这样的话,我该如何处理,重置everybodies的密码?有人能用外行的语言解释一下到底是什么问题吗?

1 个回复
最合适的回答,由SO网友:Otto 整理而成

这与WordPress或用户密码无关。

这意味着您的MySQL服务器仍在使用旧的密码哈希机制,这是在MySQL 4.1中更改的。PHP mysqli客户端较新,不支持旧的密码机制。由于这会导致错误,WordPress会返回到旧的mysql客户端,它确实支持这一点,但已弃用(这是您看到的第三条错误消息)。

换句话说,这里所指的“密码”不是WordPress密码,而是用于将WordPress连接到数据库的密码。wp配置中的用户名和密码。基本上是php文件。

您需要做的是将数据库本身的密码更改为新的哈希版本。这有点神秘,如果您没有实际控制MySQL服务器,您可能无法访问它。

您可以要求主机禁用旧的\\u密码,但如果是共享数据库系统,他们可能不愿意这样做。

如果您确实控制了服务器,请查看此答案。请注意,他反向得到了答案,解释了如何启用旧的\\u密码。您希望执行相同的基本过程,但反过来,禁用旧的\\u密码并获得更长的哈希机制,而不是更短的哈希机制。

https://dba.stackexchange.com/questions/33447/connect-error-2054-mysql-old-password-issue-still-not-solved

结束