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

Cấp quyền cho cơ sở dữ liệu MySQL bổ sung gây ra sự cố

MySQL xác định người dùng bằng CẢ tên người dùng và máy chủ. Khi MySQL thực hiện xác thực lúc đăng nhập, MySQL trước tiên sẽ tìm kiếm một tên máy chủ phù hợp chính xác. Nếu nó không tìm thấy kết quả phù hợp chính xác, thì nó sẽ tìm một máy chủ chứa ký tự đại diện '%'.

Khi bạn thực hiện GRANT ... TO [email protected] , MySQL đã tạo một người dùng mới (không có mật khẩu, vì không có IDENTIFIED BY được đưa ra trong tuyên bố.

Sau đó, điều gì đã xảy ra, khi bạn cố gắng đăng nhập bằng myuser từ localhost, mysqld đã cố gắng tìm một mục khớp với 'myuser'@'localhost' trong bảng mysql.user và nó đã tìm thấy nó. Và phiên có các đặc quyền được chỉ định cho người dùng đó.

(Nói chính xác hơn một chút, mysqld không thực sự nhìn vào nội dung của bảng mysql.user, nó thực sự nhìn vào cấu trúc trong bộ nhớ, được điền từ bảng khi nó được xây dựng. Việc xây dựng lại cấu trúc bộ nhớ được kích hoạt bởi câu lệnh GRANT, REVOKE hoặc FLUSH PRIVILEGES.)

Điều gì đã xảy ra TRƯỚC KHI bạn thêm người dùng mới đó, mysqld đang tìm kiếm một kết quả khớp chính xác về người dùng và tên máy chủ, nhưng không tìm thấy. Nhưng nó đã tìm thấy một mục nhập có ký tự đại diện '%', vì vậy nó khớp với mục đó, vì vậy phiên có tất cả các đặc quyền được cấp cho người dùng 'myuser' @ '%'.

Hai người dùng 'u'@'%''u'@'localhost' tách biệt và khác biệt với nhau. Các đặc quyền phải được cấp cho từng người dùng riêng lẻ. Mọi đặc quyền được cấp cho 'u'@'%' CHỈ áp dụng cho người dùng đó và KHÔNG áp dụng cho 'u'@'localhost' .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thuộc về nhiều lấy tất cả các hàng (Laravel)

  2. gặp lỗi mysql khi tạo trình kích hoạt

  3. Tốt hơn là nên thoát / mã hóa đầu vào của người dùng trước khi lưu trữ vào cơ sở dữ liệu hay lưu trữ như trong cơ sở dữ liệu và thoát ra trong khi truy xuất?

  4. Trong đó hùng hồn với việc tham gia nhiều bảng

  5. Không thể kết nối với bất kỳ máy chủ MySQL nào được chỉ định