Rumah  >  Artikel  >  pangkalan data  >  Mengapa MySQL_connect() gagal dengan \"Paket OK 6 bait lebih pendek daripada jangkaan\" apabila menyambung ke pangkalan data MySQL 5.0.22 jauh daripada PHP 5.3.0?

Mengapa MySQL_connect() gagal dengan \"Paket OK 6 bait lebih pendek daripada jangkaan\" apabila menyambung ke pangkalan data MySQL 5.0.22 jauh daripada PHP 5.3.0?

Susan Sarandon
Susan Sarandonasal
2024-11-07 05:10:02167semak imbas

Why does MySQL_connect() fail with

Ketidakserasian PHP MySQL: Memahami Ralat

Isu yang diterangkan dalam soalan timbul apabila cuba menyambung ke pangkalan data MySQL jauh dari tempatan Pemasangan WAMP menjalankan PHP 5.3.0. Semasa menyambung ke pangkalan data yang menjalankan MySQL 5.0.45 berjaya, menyambung ke pangkalan data dengan versi 5.0.22 menghasilkan ralat berikut:

Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected. PID=5880 in ...
Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication in ...

Penjelasan

Punca ketidakserasian ini berpunca daripada panjang kata laluan akaun MySQL yang digunakan untuk menyambung. Biasanya, akaun MySQL yang dibuat dengan versi lama menggunakan kata laluan 16 aksara. Walau bagaimanapun, versi PHP yang lebih baharu, seperti PHP 5.3.0, tidak lagi menyokong pengesahan dengan kata laluan lama ini.

Penyelesaian

Untuk menyelesaikan isu ini, kata laluan untuk akaun MySQL yang terjejas perlu ditetapkan semula menggunakan arahan seperti:

SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')

Selain itu, adalah dinasihatkan untuk menyemak sama ada pelayan dikonfigurasikan untuk menggunakan atau mencipta kata laluan lama secara lalai.

Pertanyaan Diagnostik

Untuk mendiagnosis lebih lanjut isu, pertanyaan berikut boleh dijalankan pada pelayan MySQL yang bermasalah untuk menentukan panjang kata laluan:

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

Menggantikan 'nama pengguna' dengan nama pengguna sebenar yang digunakan untuk sambungan pangkalan data akan memberikan maklumat tentang panjang kata laluan dan aksara pertama kata laluan, yang boleh membantu mengesahkan sama ada ia adalah kata laluan gaya lama.

Atas ialah kandungan terperinci Mengapa MySQL_connect() gagal dengan \"Paket OK 6 bait lebih pendek daripada jangkaan\" apabila menyambung ke pangkalan data MySQL 5.0.22 jauh daripada 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