Những người dùng MySQL nào có quyền truy cập vào cơ sở dữ liệu?


13

Làm cách nào tôi có thể biết người dùng MySQL nào có quyền truy cập vào cơ sở dữ liệu và họ có đặc quyền gì?

Tôi dường như có thể nhận được thông tin này từ phpMyAdmin khi tôi nhấp vào "Đặc quyền". . .

                 Users having access to "mydatabase"
User     Host       Type               Privileges              Grant
myuser1  %          database-specific  ALL PRIVILEGES          Yes
root     localhost  global             ALL PRIVILEGES          Yes
myuser2  %          database-specific  SELECT, INSERT, UPDATE  No

. . . nhưng tôi muốn biết làm thế nào để thực hiện truy vấn này từ dòng lệnh.

(phpMyAdmin thường chỉ cho tôi cú pháp SQL của lệnh mà nó đang thực thi, nhưng tôi không thấy nó trong trường hợp này.)

Xin lưu ý rằng tôi không hỏi người dùng nào cấp cho một người dùng cụ thể (ví dụ: "HIỂN THỊ GRANTS cho myuser1") mà là, được đặt tên của cơ sở dữ liệu, làm cách nào để xác định người dùng MySQL nào có quyền truy cập vào cơ sở dữ liệu đó và họ có đặc quyền gì ? Về cơ bản, làm thế nào tôi có thể nhận được biểu đồ trên từ dòng lệnh?

Câu trả lời:


16

Bạn có thể nối \ G vào lệnh để nhận kết quả được hiển thị trong 'lưới' veiw

SELECT * FROM mysql.db WHERE Db = '<database name in LC>'\G;

4
+1 cho \ G không thấy điều đó trước đây
jx12345

8
SELECT * FROM mysql.db WHERE Db = '<database name in LC>';

Cảm ơn. Câu trả lời này dường như không xuất dữ liệu thô giống như biểu đồ trong câu hỏi. . . nhưng trong một định dạng ít đọc hơn. Tôi đoán việc trình bày dữ liệu theo cùng định dạng là một bài tập cho người đọc. . . ;)
Philip Durbin

2

Bạn có thể thử cái này, nên cung cấp khả năng đọc tốt nhất:

select db 'DATABASE', host HOST, user USER from mysql.db where db = '<databasename>';

Một cái gì đó dễ nhớ hơn cho cli:

select db,host,user from mysql.db;
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.