GNU/Linux >> Belajar Linux >  >> Cent OS

Cara memperbaiki:mysqlnd tidak dapat terhubung ke MySQL 4.1+ menggunakan otentikasi lama yang tidak aman

Setelah memutakhirkan server PHP dari PHP 5.3.3 ke PHP 5.6.x, bekerja dengan MySQL Server 5.1.x pada kotak CentOS 6.x 64 bit biasa, ada beberapa aplikasi web baru yang menunjukkan kesalahan koneksi mysqlnd ini:mysqlnd tidak dapat sambungkan ke MySQL 4.1+ menggunakan autentikasi lama yang tidak aman

Ini adalah kesalahan yang lengkap dan tepat:

mysqlnd tidak dapat terhubung ke MySQL 4.1+ menggunakan autentikasi lama yang tidak aman. Silakan gunakan alat administrasi untuk mengatur ulang kata sandi Anda dengan perintah SET PASSWORD =PASSWORD('your_existing_password'). Ini akan menyimpan nilai hash baru dan lebih aman di mysql.user. Jika pengguna ini digunakan dalam skrip lain yang dijalankan oleh PHP 5.2 atau sebelumnya, Anda mungkin perlu menghapus tanda kata sandi lama dari file my.cnf Anda

Ini terjadi karena klien php mysqlnd baru, menolak untuk bekerja dengan kata sandi gaya lama dari MySQL. Jadi, meskipun Anda memiliki old_passwords=1, ini tidak akan berfungsi untuk aplikasi web baru ini, yang memerlukan keamanan hash sandi yang lebih kuat.

Bagaimana cara memperbaiki kesalahan mysqlnd tidak dapat terhubung ke MySQL 4.1+ menggunakan otentikasi lama yang tidak aman?

Kesalahan ini dapat diperbaiki dengan mudah jika Anda mengikuti langkah-langkah berikut:

Edit file konfigurasi MYSQL utama:

nano -w /etc/my.cnf

Ubah:

old_passwords=1

untuk

old_passwords=0

Terapkan perubahan:

service mysqld restart

Hubungkan ke konsol MySQL sebagai root:

mysql -u root -p

Sekarang atur ulang kata sandi pengguna untuk menggunakan hash baru:

SET PASSWORD FOR 'mysqluser'@'localhost'=PASSWORD('passwordhere');
flush privileges;

Ganti 'mysqluser' dan 'passwordhere' dengan nama pengguna dan kata sandi Anda yang sebenarnya.

Sekarang kembali ke /etc/my.cnf dan kembalikan perubahan yang dibuat sebelumnya, atur:

old_password=1

Mulai ulang MySQL untuk menerapkan perubahan:

service mysqld restart

Semua selesai, sekarang pengguna Anda harus menggunakan hash kata sandi MySQL yang lebih kuat.
Ini dapat diverifikasi dari konsol MySQL menggunakan perintah ini:

mysql> SELECT user, Length(Password) FROM mysql.user;
+------------------+------------------+
| user | Length(Password) |
+------------------+------------------+
| root | 16 |
| forum_user | 16 |
| user2 | 41 |
| lorex | 41 |
| m3user | 16 |

Jika Anda melihat '41', berarti pengguna tersebut menggunakan hash baru, dan '16' berarti menggunakan hash lama.

Semua selesai, pada titik ini kesalahan Anda mysqlnd tidak dapat terhubung ke MySQL 4.1+ menggunakan otentikasi tidak aman lama harus diperbaiki dan Anda harus dapat bekerja secara normal dengan aplikasi web Anda.

Cara memperbaiki:mysqlnd tidak dapat terhubung ke MySQL 4.1+ menggunakan otentikasi tidak aman lama terakhir diubah:7 Februari 2017 oleh Esteban Borges
Cent OS
  1. Bagaimana cara mengatur pengaturan MySQL Master-Slave menggunakan node CentOS 7?

  2. Cara Membuat Database di MySQL Menggunakan Command Line

  3. Cara Menghubungkan Host Jarak Jauh Menggunakan Perintah ssh

  1. Cara Backup dan Restore Database MySQL Menggunakan Command Line

  2. Bagaimana menghubungkan jarak jauh ke MySQL

  3. Cara Membuat Database MySQL Menggunakan API cPanel

  1. Cara Memeriksa Versi MySQL di Linux

  2. Cara Menghubungkan ke Server Menggunakan Fitur BMC Remote Console

  3. Cara Menghubungkan ke MySQL Menggunakan PHP