Khi sử dụng MySQL, bạn có thể gặp cảnh báo như sau trong log:

[Warning] Plugin mysql_native_password reported: 'mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead

Đây chỉ là cảnh báo (warning), không ảnh hưởng trực tiếp đến hoạt động của MySQL. Nó thông báo rằng phương thức xác thực mysql_native_password đã cũ và sẽ bị loại bỏ trong các phiên bản MySQL tương lai. MySQL khuyến nghị sử dụng caching_sha2_password, phương thức mới, bảo mật hơn và nhanh hơn.

1. Lệnh chuyển đổi user sang caching_sha2_password

Để chuyển user từ mysql_native_password sang caching_sha2_password, bạn có thể dùng lệnh sau:

ALTER USER 'username'@'host' IDENTIFIED WITH caching_sha2_password BY 'mật_khẩu';
FLUSH PRIVILEGES;

Giải thích:

  • 'username'@'host' → tên user và host của user cần cập nhật.
  • IDENTIFIED WITH caching_sha2_password → thay đổi plugin xác thực sang caching_sha2_password.
  • BY 'mật_khẩu' → đặt mật khẩu mới cho user. Lưu ý: nếu bạn nhập mật khẩu khác, mật khẩu cũ sẽ không còn hiệu lực.
  • FLUSH PRIVILEGES; → cập nhật quyền và plugin mới ngay lập tức.

2. Giữ nguyên mật khẩu cũ khi chuyển plugin

Nếu bạn muốn chuyển plugin mà không thay đổi mật khẩu, bạn cần dùng hash hiện tại trong MySQL:

SELECT user, host, plugin, authentication_string 
FROM mysql.user 
WHERE user='username';

Sau đó, dùng hash đó để cập nhật plugin mà không thay đổi mật khẩu:

ALTER USER 'username'@'host' IDENTIFIED WITH caching_sha2_password AS 'hash_từ_cột_authentication_string';
FLUSH PRIVILEGES;

Cách này giúp người dùng không bị đổi mật khẩu, tránh gián đoạn kết nối ứng dụng.

3. Khi nào cần thực hiện

  • Khi nâng cấp MySQL lên phiên bản mới mà mysql_native_password đã bị loại bỏ.
  • Khi muốn nâng cao bảo mật cho các user.
  • Khi muốn đồng bộ với các client, driver mới hỗ trợ tốt caching_sha2_password.

4. Lưu ý với các client cũ

Một số driver MySQL cũ (như phiên bản PHP MySQL trước PHP 8) có thể không hỗ trợ caching_sha2_password. Trong trường hợp này, bạn cần kiểm tra driver hoặc tiếp tục sử dụng mysql_native_password tạm thời, nhưng hãy lập kế hoạch chuyển đổi khi có thể.


Tóm lại:

  • Lệnh ALTER USER ... IDENTIFIED WITH caching_sha2_password BY 'mật_khẩu'; dùng để nâng cấp phương thức xác thực cho user.
  • Nếu bạn muốn giữ mật khẩu cũ, cần dùng hash từ cột authentication_string.
  • Cảnh báo về mysql_native_password chỉ là nhắc nhở tương lai, không ảnh hưởng hiện tại.