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 字节哈希格式。操作方法如下:
连接到远程 MySQL 服务器:
mysql -u [username] -p[password]
更新密码:
ALTER USER [username] IDENTIFIED BY '[new_password]';
授予权限:
确保用户具有访问数据库所需的权限:
GRANT ALL PRIVILEGES ON [database_name].* TO [username]@'local_ip_address';
重新连接:
尝试使用更新的密码连接到远程 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中文网其他相关文章!