首页 >数据库 >mysql教程 >为什么我的远程 MySQL 连接失败并显示'未知的身份验证方法”?

为什么我的远程 MySQL 连接失败并显示'未知的身份验证方法”?

Susan Sarandon
Susan Sarandon原创
2024-11-10 09:25:02306浏览

Why Does My Remote MySQL Connection Fail with

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

当尝试建立与 MySQL 服务器的远程连接时,可怕的“未知身份验证方法”可能会遇到“身份验证方法”错误。当服务器的身份验证机制与客户端的身份验证机制不兼容时,就会出现此问题。

在这种特殊情况下,从本地计算机(MySQL 版本 5.5.27)连接到远程服务器(MySQL 版本 5.5)时遇到错误.23)。根本原因是两个服务器使用的密码哈希方法不兼容。

解决不兼容性

此问题的解决方案是更新密码哈希服务器匹配客户端使用的方法。在本例中,它涉及更新为 MySQL 4.1 及更高版本采用的较新的 41 字节密码格式。

更新密码哈希

  • 登录使用命令行工具(例如 MySQL Workbench)远程 MySQL 服务器。
  • 执行以下命令命令:
ALTER USER 'yourusername'@'%' IDENTIFIED BY 'new_password';

其中“yourusername”是您的 MySQL 用户名,“new_password”是您的新密码。

  • 刷新权限以应用更改:
FLUSH PRIVILEGES;

重新启动 MySQL 服务器以确保更改生效

修改客户端代码

密码更新后,修改您的连接代码如下:

$dsn = 'mysql:host=184.173.209.193;dbname=my_db_name;charset=utf8';
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    PDO::MYSQL_ATTR_DIRECT_QUERY => true
);

try {
    $online_dbh = new PDO($dsn, 'myusername', 'new_password', $options);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Congratulations!";
} catch (PDOException $e) {
    echo $e->getMessage();
}

设置 PDO:: MYSQL_ATTR_DIRECT_QUERY 为 true 强制 PDO 使用更安全的连接方法,解决身份验证问题。

以上是为什么我的远程 MySQL 连接失败并显示'未知的身份验证方法”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn