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
Lepaskan: 2024-11-10 09:25:02
asal
294 orang telah melayarinya

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';
Salin selepas log masuk

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;
Salin selepas log masuk

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();
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan