Pengguna MySQL mana yang memiliki akses ke database?

13

Bagaimana saya bisa tahu pengguna MySQL mana yang memiliki akses ke database dan hak istimewa apa yang mereka miliki?

Saya sepertinya bisa mendapatkan informasi ini dari phpMyAdmin ketika saya mengklik "Hak Istimewa". . .

                 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

. . . tapi saya ingin tahu bagaimana melakukan query ini dari baris perintah.

(phpMyAdmin sering menunjukkan kepada saya sintaks SQL dari perintah yang dijalankannya, tetapi saya tidak melihatnya dalam kasus ini.)

Harap dicatat bahwa saya tidak menanyakan hibah apa yang dimiliki pengguna tertentu (yaitu "SHOW GRANTS for myuser1") melainkan, mengingat nama database, bagaimana cara menentukan pengguna MySQL yang memiliki akses ke database itu dan hak istimewa apa yang mereka miliki ? Pada dasarnya, bagaimana saya bisa mendapatkan bagan di atas dari baris perintah?

Philip Durbin
sumber

Jawaban:

16

Anda dapat menambahkan \ G pada perintah untuk menampilkan hasil di veiw 'kisi'

SELECT * FROM mysql.db WHERE Db = '<database name in LC>'\G;
Graham
sumber
4
+1 untuk \ G tidak melihat itu sebelumnya
jx12345
8
SELECT * FROM mysql.db WHERE Db = '<database name in LC>';
K. Brian Kelley
sumber
Terima kasih. Jawaban ini tampaknya menghasilkan data mentah yang sama dengan bagan dalam pertanyaan. . . tetapi dalam format yang kurang mudah dibaca. Saya kira menyajikan data dalam format yang sama adalah latihan untuk pembaca. . . ;)
Philip Durbin
2

Anda mungkin mencoba ini, harus memberikan keterbacaan terbaik:

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

Sesuatu yang lebih mudah diingat untuk klien:

select db,host,user from mysql.db;
sja
sumber