遠端MySQL 連線因「未知身份驗證方法」而失敗
當嘗試建立與MySQL 伺服器的遠端連線時,可怕的「未知身份驗證方法」可能會遇到「身份驗證方法」錯誤。當伺服器的身份驗證機制與客戶端的身份驗證機制不相容時,就會出現此問題。
在這種特殊情況下,從本機電腦(MySQL 版本 5.5.27)連接到遠端伺服器(MySQL 版本 5.5)時遇到錯誤.23)。根本原因是兩個伺服器使用的密碼雜湊方法不相容。
解決不相容性
此問題的解決方案是更新密碼雜湊伺服器匹配客戶端使用的方法。在本例中,它涉及更新為 MySQL 4.1 及更高版本採用的較新的 41 位元組密碼格式。
更新密碼雜湊
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中文網其他相關文章!