Rumah >pangkalan data >tutorial mysql >Mengapakah saya mendapat ralat \'paket OK 6 bait lebih pendek daripada jangkaan\' apabila menyambung ke pangkalan data MySQL jauh dengan PHP 5.3.0?

Mengapakah saya mendapat ralat \'paket OK 6 bait lebih pendek daripada jangkaan\' apabila menyambung ke pangkalan data MySQL jauh dengan PHP 5.3.0?

Susan Sarandon
Susan Sarandonasal
2024-11-02 10:35:02213semak imbas

Why am I getting the

Ketidakserasian PHP MySQL: Memahami Ralat Sambungan dan Penyelesaian

Menghadapi ralat "paket OK 6 bait lebih pendek daripada yang dijangkakan" apabila menyambung ke pangkalan data MySQL jauh dengan PHP versi 5.3.0 boleh menjadi isu yang membingungkan. Untuk menyelesaikan masalah ini, adalah penting untuk memahami punca asas dan menggunakan penyelesaian yang sesuai.

Ralat menunjukkan ketidakserasian antara versi PHP tempatan dan pelayan MySQL jauh. PHP versi 5.3.0 dan lebih tinggi memerlukan akaun MySQL mempunyai kata laluan yang dicincang menggunakan pemalam pengesahan MySQL baharu. Walau bagaimanapun, versi MySQL yang lebih lama seperti 5.0.22 masih boleh menggunakan kaedah pengesahan lama dengan kata laluan 16 aksara. Percanggahan ini membawa kepada ralat kerana PHP 5.3.0 gagal mentafsir respons daripada pelayan MySQL dengan betul.

Untuk menangani isu ini, terdapat dua penyelesaian yang mungkin:

  • Tetapkan Kata Laluan Baharu: Untuk akaun yang mengalami ralat, gunakan klien MySQL untuk melaksanakan perintah "SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')" untuk menjana kata laluan cincang baharu. Ini akan mengemas kini kata laluan akaun kepada format pengesahan baharu.
  • Konfigurasikan Pelayan MySQL: Sebagai alternatif, anda boleh menyemak sama ada pelayan MySQL dikonfigurasikan untuk menggunakan kaedah pengesahan lama secara lalai. Jika ya, anda boleh mengubah suai tetapan pelayan untuk menguatkuasakan pemalam pengesahan baharu dan tidak membenarkan kata laluan lama.

Untuk menentukan sama ada akaun menggunakan kata laluan 16 aksara lama, laksanakan pertanyaan:

SELECT
  Length(`Password`),
  Substring(`Password`, 1, 1)
FROM
  `mysql`.`user`
WHERE
  `user`='username'

Pada pelayan 5.0.22 yang bermasalah, menggantikan 'nama pengguna' dengan akaun yang dipersoalkan. Jika keputusan menunjukkan panjang kata laluan 16 dan aksara pertama ialah digit heksadesimal (0-9 atau A-F), ia menunjukkan kata laluan lama.

Dengan memahami punca asas dan menggunakan penyelesaian yang sesuai, anda boleh selesaikan ketidakserasian MySQL PHP dan wujudkan sambungan yang berjaya ke pangkalan data jauh.

Atas ialah kandungan terperinci Mengapakah saya mendapat ralat \'paket OK 6 bait lebih pendek daripada jangkaan\' apabila menyambung ke pangkalan data MySQL jauh dengan PHP 5.3.0?. 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