Trên Linux, khi bạn thực hiện kết nối tới MySQL/MariaDB bằng command với user thông thường nếu bạn không sử dụng quyền sudo thì bạn sẽ gặp lỗi sau đây.
Như các bạn đã thấy trường hợp bạn không sử dụng quyền sudo thì sẽ gặp lỗi “Access denied for user …”. Còn khi sử dụng quyền sudo thì kết nối thành công.
Nguyên nhân là do trên Ubuntu, mặc định MySQL/MariaDB chỉ cho phép user root login thông qua unix_socket và nó đòi hỏi bạn phải có quyền sudo để thì mới login được.
Để xác nhận user login bằng phương thực gì thì các bạn tham khảo lệnh SQL sau:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Vậy để login bạn cần tạo user khác để login. Tuy nhiên bạn có thể thay đổi cơ chế login để user root login thông qua password như thông thường.
Sử dụng các lệnh SQL sau để thay đổi từ unix_socket sang login bằng password thông thường.
- Đầu tiên login bằng tài khoản root với quyền sudo
sudo mysql -u root -p
- Sau đó thay đổi lại cơ chế login
MariaDB []>use mysql; MariaDB [mysql]>update user set plugin='' where User='root'; MariaDB [mysql]>flush privileges; MariaDB [mysql]>exit
Bây giờ bạn có thể đăng nhập bình thường mà không phải sử dụng quyền sudo.