Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cấp toàn bộ quyền database cho user MySQL


Quy trình 2 bước

Bước 1: Tạo user

CREATE USER 'ten_user'@'localhost' IDENTIFIED BY 'mat_khau';

Bước 2: Cấp toàn bộ quyền trên database

GRANT ALL PRIVILEGES ON ten_database.* TO 'ten_user'@'localhost';

Ví dụ thực tế

Tạo user "Adam Smith"

mysql> CREATE USER 'Adam Smith'@'localhost' IDENTIFIED BY 'Adam123456'; 
Query OK, 0 rows affected (0.29 sec)

Cấp quyền trên database "test"

mysql> GRANT ALL PRIVILEGES ON test.* TO 'Adam Smith'@'localhost'; 
Query OK, 0 rows affected (0.19 sec)

Giải thích quyền

ALL PRIVILEGES bao gồm:

  • Dữ liệu: SELECT, INSERT, UPDATE, DELETE
  • Cấu trúc: CREATE, ALTER, DROP, INDEX
  • Khác: CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER

Các cấp độ cấp quyền

Cấp độCú phápPhạm vi
GlobalGRANT ALL ON *.* TO 'user'@'host'Tất cả database
DatabaseGRANT ALL ON db.* TO 'user'@'host'1 database cụ thể
TableGRANT ALL ON db.table TO 'user'@'host'1 bảng cụ thể
ColumnGRANT SELECT(col) ON db.table TO 'user'@'host'1 cột cụ thể

Kiểm tra quyền đã cấp

mysql> SHOW GRANTS FOR 'Adam Smith'@'localhost';

Thu hồi quyền

REVOKE ALL PRIVILEGES ON ten_database.* FROM 'ten_user'@'localhost';

Lưu ý quan trọng

  • MySQL 8.0: Không cần FLUSH PRIVILEGES (tự động)
  • MySQL < 8.0: Cần chạy FLUSH PRIVILEGES; sau GRANT/REVOKE
  • User 'user'@'localhost' ≠ 'user'@'%' (host khác = user khác)
  • Nguyên tắc least privilege: Chỉ cấp quyền cần thiết
  • Tránh dùng root cho ứng dụng

Ví dụ cấp quyền chỉ đọc (Read-only)

CREATE USER 'readonly'@'%' IDENTIFIED BY 'strong_password';
GRANT SELECT ON ten_database.* TO 'readonly'@'%';