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

Kiểm tra quyền người dùng (grants) trước khi CREATE DATABASE trong MySQL

Giới thiệu

Trước khi tạo database, nên kiểm tra xem tài khoản hiện tại (hoặc tài khoản khác) có quyền CREATE DATABASE hay không bằng lệnh SHOW GRANTS.

Cú pháp

SHOW GRANTS FOR 'username'@'host';

Hoặc cho người dùng hiện tại:

SHOW GRANTS FOR CURRENT_USER;

Ví dụ thực hành

Case 1: Kiểm tra quyền của root (current_user)

mysql> SHOW GRANTS FOR CURRENT_USER;

Kết quả hiển thị đầy đủ quyền: CREATE, DROP, ALTER, CREATE DATABASE (được nhúng trong CREATE ở cấp global), SUPER, v.v. Root có toàn quyền.

Case 2: Kiểm tra quyền của user 'Bob'

mysql> SHOW GRANTS FOR 'Bob'@'%';

Kết quả tương tự root (trong ví dụ Bob cũng được cấp toàn quyền).

Phân tích quyền cần thiết

  • Để CREATE DATABASE: cần quyền CREATE ở cấp global (*.*) hoặc cấp database cụ thể.
  • Kiểm tra trong output: tìm CREATE trong danh sách privileges.
  • Quyền CREATE DATABASE không tách biệt; nó là một phần của privilege CREATE.

Các lệnh hữu ích khác

-- Xem quyền của user hiện tại (rút gọn)
SHOW GRANTS;

-- Xem tất cả user và host
SELECT User, Host FROM mysql.user;

-- Cấp quyền CREATE DATABASE cho user
GRANT CREATE ON *.* TO 'dev'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Lưu ý

  • MySQL 8.0: dùng CREATE USER + GRANT riêng biệt (không còn IDENTIFIED BY trong GRANT).
  • Quyền cấp ở cấp global (*.*) áp dụng cho tất cả database.
  • Sau khi GRANT, chạy FLUSH PRIVILEGES (MySQL < 8.0) hoặc không cần (8.0+ tự động).