Ralat Ketersambungan MySQL dengan Pengesahan Lama
Menemui mesej ralat "mysqlnd tidak boleh menyambung ke MySQL 4.1 menggunakan pengesahan lama" menandakan isu keserasian apabila cuba menyambung ke pangkalan data MySQL yang menggunakan skema kata laluan yang sudah lapuk. Untuk menyelesaikan masalah ini, adalah penting untuk menentukan sama ada pelayan pangkalan data dikonfigurasikan untuk menggunakan skema kata laluan lama.
Menyemak Konfigurasi Pelayan
Laksanakan pertanyaan SQL berikut:
<code class="sql">SHOW VARIABLES LIKE 'old_passwords'</code>
Salin selepas log masuk
Memahami Keputusan
- Jika hasilnya old_passwords,Mati, pelayan dikonfigurasikan untuk menggunakan rutin pengesahan baharu. Kata laluan pengguna mungkin disimpan dalam format lama, tetapi pelayan akan menggunakan rutin baharu untuk pengesahan.
- Jika hasilnya old_passwords,Hidup, pelayan dikonfigurasikan untuk menggunakan rutin pengesahan lama secara lalai. Dalam kes ini, skema kata laluan lama digunakan untuk pengesahan.
Penyelesaian Masalah dan Penyelesaian
Untuk menyelesaikan isu, ikut langkah berikut:
-
Semak Format Kata Laluan Pengguna: Sahkan panjang kata laluan pengguna dalam jadual mysql.user. Panjang 16 aksara menunjukkan kata laluan lama, manakala panjang 41 aksara menandakan kata laluan baharu.
-
Tetapkan Kata Laluan Baharu (jika perlu): Jika kata laluan pengguna berada dalam kata laluan lama format, tetapkan kata laluan baharu menggunakan arahan berikut:
<code class="sql">SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');</code>
Salin selepas log masuk
-
Keistimewaan Flush: Kemas kini keistimewaan pangkalan data dengan melaksanakan:
<code class="sql">FLUSH Privileges;</code>
Salin selepas log masuk
-
Sahkan Semula Panjang Kata Laluan: Semak panjang kata laluan pengguna sekali lagi dalam jadual mysql.user. Ia kini sepatutnya menjadi 41 aksara, menunjukkan bahawa format kata laluan baharu sedang digunakan.
-
Buat Semula Sambungan: Selepas melengkapkan langkah ini, cuba sambung semula ke pangkalan data dengan pelanggan anda (cth., mysqlnd) . Sambungan sepatutnya berjaya.
Sumber Tambahan
Untuk maklumat lanjut, rujuk dokumentasi MySQL berikut:
- http: //dev.mysql.com/doc/refman/5.0/en/old-client.html
- http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html
- http://dev.mysql.com/doc/refman/5.0/ms/set-password.html
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'mysqlnd tidak dapat menyambung ke MySQL 4.1 menggunakan pengesahan lama\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!