Thông báo lỗi đó thường có nghĩa là mật khẩu chúng tôi đang sử dụng không khớp với những gì MySQL nghĩ rằng mật khẩu phải dành cho người dùng mà chúng tôi đang kết nối hoặc người dùng MySQL phù hợp không tồn tại (chưa được tạo).
Trong MySQL, người dùng được xác định bằng cả tên người dùng ("test2") và máy chủ lưu trữ ("localhost").
Thông báo lỗi xác định người dùng ("test2") và máy chủ ("localhost") các giá trị ...
'test2'@'localhost'
Chúng tôi có thể kiểm tra xem người dùng có tồn tại hay không, bằng cách sử dụng truy vấn này từ một ứng dụng khách mà chúng tôi có thể kết nối từ:
SELECT user, host FROM mysql.user
Chúng tôi đang tìm một hàng có "test2" cho người dùng và "localhost" cho máy chủ lưu trữ .
user host
------- -----------
test2 127.0.0.1 cleanup
test2 ::1
test2 localhost
Nếu hàng đó không tồn tại, thì máy chủ có thể được đặt thành giá trị ký tự đại diện là %
, để khớp với bất kỳ máy chủ nào khác không trùng khớp.
Nếu hàng tồn tại, thì mật khẩu có thể không khớp. Chúng tôi có thể thay đổi mật khẩu (nếu chúng tôi được kết nối với tư cách là người dùng có đủ đặc quyền, ví dụ:root
SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('mysecretcleartextpassword')
Chúng tôi cũng có thể xác minh rằng người dùng có đặc quyền trên các đối tượng trong cơ sở dữ liệu.
GRANT SELECT ON jobs.* TO 'test2'@'localhost'
CHỈNH SỬA
Nếu chúng tôi thực hiện các thay đổi đối với bảng đặc quyền mysql bằng các thao tác DML (CHÈN, CẬP NHẬT, XÓA), những thay đổi đó sẽ không có hiệu lực cho đến khi MySQL đọc lại các bảng. Chúng tôi có thể thực hiện các thay đổi có hiệu quả bằng cách buộc đọc lại với FLUSH PRIVILEGES
, được thực thi bởi một người dùng đặc quyền.