為什麼我的遠端 MySQL 連線失敗並顯示「未知的身份驗證方法」?

Susan Sarandon
發布: 2024-11-10 09:25:02
原創
224 人瀏覽過

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_DIRECTECT為true 會強制PDO 使用更安全的連線方式,解決認證問題。

以上是為什麼我的遠端 MySQL 連線失敗並顯示「未知的身份驗證方法」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板