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
Lepaskan: 2024-11-07 05:10:02
asal
165 orang telah melayarinya

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

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

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!