首页  >  文章  >  数据库  >  为什么MySQL会抛出“未知的身份验证方法”远程连接错误?

为什么MySQL会抛出“未知的身份验证方法”远程连接错误?

Barbara Streisand
Barbara Streisand原创
2024-11-07 09:11:02651浏览

Why Does MySQL Throw an

MySQL 远程连接错误:“未知身份验证方法”

当尝试从本地计算机建立到 MySQL 服务器的远程连接时,您可能会遇到以下错误:

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

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

了解问题:

此错误通常表示本地和远程 MySQL 使用的密码哈希方法之间不兼容服务器。 MySQL 4.1 之前的版本采用 16 字节密码哈希方法,而 4.1 及更高版本采用更安全的 41 字节哈希方法。如果本地 MySQL 服务器使用旧的哈希方法,但远程服务器使用新的哈希方法,连接尝试将失败,并出现“未知的身份验证方法”错误。

解决问题:

要解决此问题,您需要更新远程 MySQL 服务器上的密码以使用新的 41 字节哈希格式。操作方法如下:

  1. 连接到远程 MySQL 服务器:

    mysql -u [username] -p[password]
  2. 更新密码:

    ALTER USER [username] IDENTIFIED BY '[new_password]';
  3. 授予权限:

    确保用户具有访问数据库所需的权限:

    GRANT ALL PRIVILEGES ON [database_name].* TO [username]@'local_ip_address';
  4. 重新连接:

    尝试使用更新的密码连接到远程 MySQL 服务器:

    $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', 'new_password', $options);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "Success!";
    } catch (PDOException $e) {
        echo $e->getMessage();
    }

以上是为什么MySQL会抛出“未知的身份验证方法”远程连接错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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