Fix lỗi caching_sha2_password khi connect đến MySQL 8.0 bằng các MySQL GUI Tools

Vào 1 ngày đẹp trời khi bạn update version MySQL từ 5.6 hoặc 5.7 lên 8.0 hoặc khi join 1 dự án mà đang dùng version 8.0. Như mọi khi thay chúng ta lại bật GUI Tools lên và connect đến database, nhưng thế méo nào đã nhập đúng user, passworrd nhưng đời không như mơ. Nhận được ngay 1 thông báo lỗi Plugin caching_sha2_password could not be loaded

Lỗi này chỉ xảy ra với MySQL version 8.0. Nguyên nhân lỗi là do Oracle đã thay đổi cơ chế mã hóa password chuyển từ dùng mysql_native_password sang caching_sha2_password. Vẫn dùng hàm băm SHA-256, nhưng sử dụng bộ nhớ cache để giải quyết các vấn đề về thời gian thực tức để đảm bảo tính đúng đắn của dữ liệu. Ngoài ra còn hỗ trợ các giao thức kết nối và không yêu cầu liên kết ngược lại OpenSSL cho khả năng thay đổi mật khẩu theo cơ chế RSA. Chính vì điều này dẫn đến khi connect đến MySQL chúng ta nhận được thông báo lỗi như trên. Các bạn có thể tìm hiểu thêm thông tin tại đây
Vậy để fix lỗi này chúng ta phải làm gì ?
Cách 1
Tạo 1 user mới hoặc update user hiện tại với cách mã hóa mysql_native_password bằng

//create new user
CREATE user '[USERNAME]'@'%' identified with mysql_native_password by '[PASSWORD]';  
//update current user
ALTER USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';  

Cách 2
Chuyển cách mã hóa password của MySQL từ cachingsha2password về mysql_native_password bằng cách thay đổi config của MySQL trong file my.cnf đối với Linux và MacOS hoặc my.ini đối với Windows

[mysqld]

default_authentication_plugin=mysql_native_password  

Sau đó nhớ restart MySQL và thử connect lại

Cách 3
Update lên version cao hơn của các MySQL GUI Tools mà có hỗ trợ caching_sha2_password, hoặc sử dụng các Tools khác đã support plugin này.

Chúc các bạn 1 ngày làm việc vui vẻ và hiệu quả. Hẹn gặp lại.

Related article