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处理的身份验证,因为我使用PHP
的MySQL
API
,所以我降级了,PHP 5.2.8
并且能够成功建立远程连接。
我希望这可以帮助别人。
以上是 MySQL远程连接因“身份验证方法未知”而失败 的全部内容, 来源链接: utcz.com/qa/409962.html