Sambungan MySQL Jauh Gagal dengan "Kaedah Pengesahan Tidak Diketahui"
Apabila cuba mewujudkan sambungan jauh ke pelayan MySQL, "tidak diketahui" yang ditakuti kaedah pengesahan" ralat boleh dihadapi. Isu ini timbul apabila mekanisme pengesahan pelayan tidak serasi dengan pelanggan.
Dalam kes khusus ini, ralat ditemui semasa menyambung daripada mesin tempatan (MySQL versi 5.5.27) ke pelayan jauh (MySQL versi 5.5 .23). Punca asasnya ialah ketidakserasian antara kaedah cincang kata laluan yang digunakan oleh kedua-dua pelayan.
Menyelesaikan Ketakserasian
Penyelesaian kepada masalah ini adalah dengan mengemas kini cincang kata laluan pada pelayan untuk memadankan kaedah yang digunakan oleh klien. Dalam keadaan ini, ia melibatkan pengemaskinian kepada format kata laluan 41-bait yang lebih baharu yang digunakan oleh MySQL 4.1 dan lebih baru.
Mengemas kini Cincang Kata Laluan
ALTER USER 'yourusername'@'%' IDENTIFIED BY 'new_password';
di mana 'nama pengguna' ialah nama pengguna MySQL anda dan 'kata laluan_baru' ialah kata laluan baharu anda.
FLUSH PRIVILEGES;
Mulakan semula pelayan MySQL untuk memastikan perubahan berlaku.
Mengubah suai Kod Pelanggan
Setelah kata laluan telah dikemas kini, ubah suai kod sambungan anda seperti berikut:
$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(); }
Menetapkan PDO::MYSQL_ATTR_DIRECT_QUERY kepada benar memaksa PDO untuk menggunakan kaedah sambungan yang lebih selamat, menyelesaikan isu pengesahan.
Atas ialah kandungan terperinci Mengapa Sambungan MySQL Jauh Saya Gagal dengan 'Kaedah Pengesahan Tidak Diketahui'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!