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

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

Barbara Streisand
发布: 2024-11-07 09:11:02
原创
759 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板