Hãy xem cách cấp quyền (được gọi là đặc quyền) cho người dùng cơ sở dữ liệu MySQL
Theo mặc định khi bạn tạo người dùng MySQL mới bằng cú pháp
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
người dùng không thể làm gì nhiều. Chúng tôi có thể nói rằng nó không thể thực sự xảy ra với bất cứ điều gì.
Nó không thể đọc dữ liệu từ bất kỳ cơ sở dữ liệu hiện có nào, chưa nói đến việc sửa đổi dữ liệu. Và nó thậm chí không thể tạo cơ sở dữ liệu mới.
Để yêu cầu người dùng làm bất kỳ điều gì, bạn phải cấp đặc quyền với nó.
Bạn có thể làm như vậy bằng cách sử dụng GRANT
lệnh.
Chúng tôi có thể sử dụng GRANT <permission>
, sử dụng các từ khóa quyền sau:
-
CREATE
-
DROP
-
DELETE
-
INSERT
-
SELECT
-
UPDATE
-
ALL PRIVILEGES
Cấp đặc quyền tạo cơ sở dữ liệu mới cho người dùng
GRANT CREATE ON *.* TO '<username>'@'localhost';
Cấp đặc quyền cho người dùng để tạo bảng mới trong cơ sở dữ liệu cụ thể
GRANT CREATE ON <database>.* TO '<username>'@'localhost';
Cấp đặc quyền đọc (truy vấn) một cơ sở dữ liệu cụ thể cho người dùng
GRANT SELECT ON <database>.* TO '<username>'@'localhost';
Cấp đặc quyền để đọc một cơ sở dữ liệu cụ thể bảng cho người dùng
GRANT SELECT ON <database>.<table> TO '<username>'@'localhost';
Cấp đặc quyền để chèn, cập nhật và xóa các hàng trong một cơ sở dữ liệu cụ thể để một người dùng
GRANT INSERT, UPDATE, DELETE ON <database>.* TO '<username>'@'localhost';
Cấp đặc quyền xóa bảng trong cơ sở dữ liệu cụ thể cho người dùng
GRANT DROP ON <database>.* TO '<username>'@'localhost';
Cấp đặc quyền xóa cơ sở dữ liệu cho người dùng
GRANT DROP ON *.* TO '<username>'@'localhost';
Cung cấp tất cả đặc quyền trên một cơ sở dữ liệu cụ thể cho người dùng
GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'localhost';
Cung cấp tất cả các đặc quyền cho người dùng
GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Thu hồi đặc quyền
Ví dụ để thu hồi DROP
đặc quyền trên <database>
:
REVOKE DROP ON <database>.* TO '<username>'@'localhost';
Để thu hồi tất cả các đặc quyền, hãy chạy:
REVOKE ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Bạn có thể hình dung các đặc quyền của một người dùng bằng cách chạy:
SHOW GRANTS FOR '<username>'@'localhost';