Ralat: mysqlnd Tidak Dapat Menyambung ke MySQL 4.1 Menggunakan Pengesahan Legacy
Apabila menggunakan skema PHP 5.3 dan MySQL 5.5, pembangun mungkin menghadapi perkara berikut ralat:
Database connection failed: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.
Mesej ralat ini menandakan bahawa mysqlnd, pemacu asli MySQL, tidak dapat mewujudkan sambungan selamat disebabkan oleh mekanisme pengesahan lapuk yang digunakan dalam MySQL 4.1 atau versi terdahulu.
Menyelesaikan Isu
Untuk menyelesaikan isu ketersambungan ini, ikut langkah berikut:
Alih Keluar atau Ulas Tetapan 'old_passwords' dalam saya .cnf:
Ubah suai fail konfigurasi my.cnf dan cari baris yang mengandungi 'old_passwords = 1'. Alih keluar baris ini atau ulasnya dengan menambah aksara '#' pada permulaan.
Mulakan semula MySQL:
Mulakan semula perkhidmatan MySQL ke gunakan perubahan yang dibuat dalam my.cnf. Langkah ini memastikan MySQL menggunakan format kata laluan baharu. Jika dilangkau, MySQL akan terus menggunakan format yang tidak selamat.
Kemas kini Kata Laluan Pengguna:
Sambung ke pangkalan data dan laksanakan pertanyaan berikut untuk mengenal pasti pengguna dengan kata laluan lapuk:
SELECT user, Length(`Password`) FROM `mysql`.`user`;
Pertanyaan ini akan memaparkan pengguna dengan cincang kata laluan lama (16 aksara) dan baharu (41 aksara).
Laksanakan Kemas Kini Kata Laluan:
Untuk pengguna dengan cincang kata laluan 16 aksara, kemas kini kata laluan mereka menggunakan arahan berikut:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
Ganti 'nama pengguna' dengan nama pengguna dan 'kata laluan sebenar ' dengan kata laluan baharu yang dikehendaki.
Keistimewaan Flush:
Akhir sekali, laksanakan arahan berikut untuk menggunakan kata laluan yang dikemas kini:
FLUSH PRIVILEGES;
Dengan melengkapkan langkah ini, anda boleh menyelesaikan isu sambungan yang disebabkan oleh pengesahan warisan dan mewujudkan sambungan selamat ke MySQL menggunakan mysqlnd.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'mysqlnd Tidak Dapat Menyambung ke MySQL 4.1 Menggunakan Pengesahan Legacy\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!