Làm cách nào tôi có thể hiển thị các đặc quyền của người dùng trong MySQL?


69

Tôi biết rằng tôi có thể đặt đặc quyền của người dùng theo cách đơn giản sau:

grant all on [database name].[table name] to [user name]@[host name];

Nhưng làm thế nào tôi có thể thấy các đặc quyền hiện có?

Tôi cần xem dữ liệu tương tự với dữ liệu được sử dụng trong tài trợ. Nói cách khác, tôi muốn biết rằng một người dùng nhất định có quyền truy cập nhất định vào một bảng nhất định của cơ sở dữ liệu đã cho từ một máy chủ nhất định.

Làm thế nào tôi có thể nhận được nó?

Câu trả lời:



51

Đây là Tài liệu MySQL cho SHOW GRANTS:

SHOW GRANTS [FOR user]

Câu lệnh này liệt kê câu lệnh GRANT hoặc câu lệnh phải được ban hành để sao chép các đặc quyền được cấp cho tài khoản người dùng MySQL. Tài khoản được đặt tên bằng định dạng tương tự như đối với câu lệnh GRANT; ví dụ: 'jeffrey' @ 'localhost'. Nếu bạn chỉ định phần tên người dùng của tên tài khoản, phần tên máy chủ của '%' sẽ được sử dụng. Để biết thêm thông tin về việc chỉ định tên tài khoản, hãy xem Mục 12.5.1.3, Cú pháp Cú pháp GRANT.

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

Để liệt kê các đặc quyền được cấp cho tài khoản mà bạn đang sử dụng để kết nối với máy chủ, bạn có thể sử dụng bất kỳ câu lệnh nào sau đây:

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

Kể từ MySQL 5.0.24, nếu SHOW GRANTS FOR CURRENT_USER (hoặc bất kỳ cú pháp tương đương nào) được sử dụng trong ngữ cảnh DEFINER, chẳng hạn như trong một thủ tục được lưu trữ được xác định bằng SQL SECURITY DEFINER), các khoản trợ cấp được hiển thị là của các trình khử không phải kẻ xâm lược

SHOW GRANTS chỉ hiển thị các đặc quyền được cấp rõ ràng cho tài khoản được đặt tên. Các đặc quyền khác có thể có sẵn cho tài khoản, nhưng chúng không được hiển thị. Ví dụ: nếu một tài khoản ẩn danh tồn tại, tài khoản được đặt tên có thể có thể sử dụng các đặc quyền của nó, nhưng SHOW GRANTS sẽ không hiển thị chúng.

SHOW GRANTS yêu cầu đặc quyền CHỌN cho cơ sở dữ liệu mysql.


SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Sandip Bhattacharya
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.