Rumah >pangkalan data >tutorial mysql >Mengapa Sambungan MySQL Jauh Saya Gagal dengan 'Kaedah Pengesahan Tidak Diketahui'?

Mengapa Sambungan MySQL Jauh Saya Gagal dengan 'Kaedah Pengesahan Tidak Diketahui'?

Susan Sarandon
Susan Sarandonasal
2024-11-10 09:25:02300semak imbas

Why Does My Remote MySQL Connection Fail with

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

  • Log masuk ke pelayan MySQL jauh menggunakan alat baris arahan seperti MySQL Workbench.
  • Laksanakan arahan berikut:
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.

  • Siram keistimewaan untuk menggunakan perubahan:
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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn