Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lỗi:mysqlnd không thể kết nối với MySQL 4.1+ bằng xác thực không an toàn cũ

  • Xóa hoặc nhận xét old_passwords =1 trong my.cnf

Khởi động lại MySQL. Nếu không, MySQL sẽ tiếp tục sử dụng định dạng mật khẩu cũ, điều này có nghĩa là bạn không thể nâng cấp mật khẩu bằng cách sử dụng hàm băm PASSWORD () tích hợp.

Hàm băm mật khẩu cũ là 16 ký tự, mã băm mới là 41 ký tự.

  • Kết nối với cơ sở dữ liệu và chạy truy vấn sau:

    SELECT user, Length(`Password`) FROM  `mysql`.`user`;
    

Điều này sẽ cho bạn biết mật khẩu nào ở định dạng cũ, ví dụ:

+----------+--------------------+
| user     | Length(`Password`) |
+----------+--------------------+
| root     |                 41 |
| root     |                 16 |
| user2    |                 16 |
| user2    |                 16 |
+----------+--------------------+

Lưu ý ở đây rằng mỗi người dùng có thể có nhiều hàng (một hàng cho mỗi thông số kỹ thuật máy chủ lưu trữ khác nhau).

Để cập nhật mật khẩu cho từng người dùng, hãy chạy như sau:

UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';

Cuối cùng, xóa đặc quyền:

FLUSH PRIVILEGES;

Nguồn: Cách khắc phục" mysqlnd không thể kết nối với MySQL 4.1+ bằng cách sử dụng xác thực cũ "trên PHP5.3



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tham gia bên trong và thực hiện mệnh đề ở đâu trong ()?

  2. Khung thực thể với MySQL - Đã hết thời gian chờ khi tạo mô hình

  3. Địa chỉ IP lưu trữ trong cơ sở dữ liệu MySQL bằng PHP

  4. Nhập data.sql MySQL Docker Container

  5. Đồng bộ hóa cơ sở dữ liệu máy khách SQLite với cơ sở dữ liệu máy chủ MySQL