MySQL远程连接因“身份验证方法未知”而失败

我正在尝试从本地计算机在线远程连接到MySQL服务器,但出现以下错误:

Warning: PDO::__construct(): The server requested authentication 

method unknown to the client [mysql_old_password] in

C:\xampp\htdocs\ticket\terminal\sync.php

SQLSTATE[HY000] [2054] The server requested authentication method

umknown to the client

我的本地MySQL服务器版本为5.5.27,libmysql-mysqlnd 5.0.10远程MySQL服务器版本为5.5.23,未公开mysqlnd版本。

我猜这是一个不兼容的密码哈希问题,但我不知道如何解决它。以下是我的连接代码的一部分

$dsn = 'mysql:host=184.173.209.193;dbname=my_db_name';

$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',

);

try {

$online_dbh = new PDO($dsn, 'myusername', 'mypassword', $options);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo "Congratulations!";

} catch (PDOException $e) {

echo $e->getMessage();

}

回答:

我克服了挑战。我发现我的远程MySQL数据库主机仍使用旧的MySQL密码哈希(16字节),而我的本地主机数据库服务器使用41字节的密码哈希。我使用以下查询来查找密码长度:

SELECT PASSWORD('mypass')

我通过运行以下查询将localhost数据库服务器密码哈希更改为16字节

SET GLOBAL old_passwords = 1;

然后,我编辑了my.ini文件,并设置,old_password=1以确保服务器重新启动时不会恢复为新的密码系统。但这并不能解决我的问题。

我发现使用PHP的是由PHP处理的身份验证,因为我使用PHPMySQLAPI,所以我降级了,PHP 5.2.8并且能够成功建立远程连接。

我希望这可以帮助别人。

以上是 MySQL远程连接因“身份验证方法未知”而失败 的全部内容, 来源链接: utcz.com/qa/409962.html

回到顶部