Rumah > Artikel > pangkalan data > Mengapa MySQL Melemparkan Ralat Sambungan Jauh "Kaedah Pengesahan Tidak Diketahui"?
Ralat Sambungan Jauh MySQL: "Kaedah Pengesahan Tidak Diketahui"
Apabila cuba mewujudkan sambungan jauh ke pelayan MySQL daripada mesin tempatan, anda mungkin menghadapi ralat berikut:
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
Memahami Masalah:
Ralat ini biasanya menunjukkan ketidakserasian antara kaedah pencincangan kata laluan yang digunakan oleh MySQL tempatan dan jauh pelayan. Versi MySQL sebelum 4.1 menggunakan kaedah pencincangan kata laluan 16-bait, manakala versi 4.1 dan ke atas menggunakan kaedah pencincangan 41-bait yang lebih selamat. Jika pelayan MySQL tempatan menggunakan kaedah pencincangan lama tetapi pelayan jauh menggunakan yang baharu, percubaan sambungan akan gagal dengan ralat "kaedah pengesahan tidak diketahui".
Menyelesaikan Isu:
Untuk menyelesaikan isu ini, anda perlu mengemas kini kata laluan pada pelayan MySQL jauh untuk menggunakan format pencincangan 41-bait baharu. Begini caranya:
Sambung ke Pelayan MySQL Jauh:
mysql -u [username] -p[password]
Kemas kini Kata Laluan:
ALTER USER [username] IDENTIFIED BY '[new_password]';
Berikan Kebenaran:
Pastikan bahawa pengguna mempunyai kebenaran yang diperlukan untuk mengakses pangkalan data:
GRANT ALL PRIVILEGES ON [database_name].* TO [username]@'local_ip_address';
Sambung semula:
Cuba sambung ke pelayan MySQL jauh dengan kata laluan yang dikemas kini:
$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(); }
Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat Sambungan Jauh "Kaedah Pengesahan Tidak Diketahui"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!