mysql_connect (): Server meminta metode otentikasi yang tidak diketahui klien [mysql_old_password] di

8

Saya mencoba menjalankan PHP 5.4.1 (dikompilasi dari sumber) tetapi ketika saya mencoba untuk terhubung pada mysql saya mendapatkan:

Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in

Saat menggunakan PHP 5.3 / 5.2 berfungsi dengan normal. Adakah gagasan tentang apa yang menyebabkan masalah ini?

Fernando
sumber
Lihat jawaban ini dalam pertanyaan lain: stackoverflow.com/a/50776838/1041047
Robin Qiu

Jawaban:

10

Coba baca ini: tautan

MySQL memperkenalkan hash kata sandi yang lebih panjang di (saya pikir) versi 4.1, dan server Anda mungkin masih menggunakannya (periksa hashes kata sandi 16 byte di tabel pengguna mysql Anda). Versi yang lebih baru menggunakan hash kata sandi yang lebih panjang. Server Anda mendukung keduanya, tetapi klien Anda (php) tampaknya hanya mendukung yang baru dalam versi ini (dan terus).

Jika memungkinkan, gunakan solusi dari tautan di baris pertama, dan atur kembali kata sandi Anda dengan hash baru, tetapi berhati-hatilah, jika Anda menggunakan klien (lama) lain yang bergantung pada kata sandi lama, kompatibilitas mungkin terputus. Coba juga mencari dukungan kata sandi lama untuk MySQL di PHP, tetapi saya tidak yakin tentang hal itu.

mulaz
sumber
9
ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';
Robin Qiu
sumber
Jawaban ini memecahkan masalah ini untuk saya serverfault.com/questions/295285/…
Vishrant
3

Saya tahu ini adalah topik lama, tetapi saya mengatasi masalah ini, tanpa harus memutakhirkan / menurunkan versi apa pun. Pada dasarnya saya mengomentari old_passwords = 1 baris di file my.cnf saya, me-restart mysql, menambahkan / memodifikasi pengguna yang akhirnya mendapatkan hash 16 byte, kemudian saya kembali dan menghapus komentar pada old_passwords = 1 baris, dan me-restart mysql. Pada dasarnya:

  • komentar old_passwords = 1
  • restart mysql
  • tambah / ubah pengguna
  • batalkan komentar old_passwords = 1
  • restart mysql

Jadi begitulah: 1 pengguna menggunakan jenis kata sandi baru, sementara pengguna lain memiliki jenis kata sandi lama. Dan semua orang bisa masuk! ;)

petru
sumber
1

Sering kali ini dapat terjadi jika server MYSQL Anda menggunakan hash kata sandi lama , mengubah kata sandi atau memutakhirkan server untuk mendapatkan hash kata sandi terbaru yang memperbaiki masalah otentikasi.

Clain Dsilva
sumber
1
Saya baru saja mengubah kata sandi pengguna db lagi, dengan asumsi MySql akan menggunakan hash baru. Itu berhasil. Tidak ada perubahan lain yang diperlukan.
eyal_katz
0

Saya memiliki pesan serupa ketika mencoba meningkatkan instalasi mediawiki saya. Saya menggunakan Netfirms sebagai penyedia hosting saya dan saya menyelesaikan ini dengan masuk ke panel kontrol, masuk ke area MySQL dan mengubah database yang digunakan mediawiki. Saya kemudian dapat melanjutkan dengan upgrade mediawiki.

jedi34567
sumber