Bagaimana saya bisa menunjukkan hak pengguna di MySQL?

69

Saya tahu bahwa saya dapat mengatur hak pengguna dengan cara sederhana berikut:

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

Tetapi bagaimana saya bisa melihat hak istimewa yang ada?

Saya perlu melihat data yang mirip dengan yang digunakan dalam hibah. Dengan kata lain saya ingin tahu bahwa pengguna yang diberikan memiliki akses yang diberikan ke tabel tertentu dari database yang diberikan dari host yang diberikan.

Bagaimana saya mendapatkannya?

Roma
sumber

Jawaban:

75

Perintahnya SHOW GRANTS [FOR user]adalah apa yang Anda cari. Lihat di sini untuk detail lebih lanjut.

John Gardeniers
sumber
51

Berikut adalah Dokumentasi MySQL untuk SHOW GRANTS:

SHOW GRANTS [FOR user]

Pernyataan ini mencantumkan pernyataan GRANT atau pernyataan yang harus dikeluarkan untuk menduplikasi hak istimewa yang diberikan ke akun pengguna MySQL. Akun tersebut dinamai menggunakan format yang sama seperti untuk pernyataan GRANT; misalnya, 'jeffrey' @ 'localhost'. Jika Anda hanya menentukan bagian nama pengguna dari nama akun, bagian nama host dari '%' digunakan. Untuk informasi tambahan tentang menentukan nama akun, lihat Bagian 12.5.1.3, “Sintaks GRANT”.

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

Untuk mendaftar hak istimewa yang diberikan ke akun yang Anda gunakan untuk terhubung ke server, Anda dapat menggunakan salah satu dari pernyataan berikut:

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

Pada MySQL 5.0.24, jika SHOW GRANTS FOR CURRENT_USER (atau salah satu dari sintaks yang setara) digunakan dalam konteks DEFINER, seperti dalam prosedur tersimpan yang didefinisikan dengan SQL SECURITY DEFINER), hibah yang ditampilkan adalah dari definisi dan bukan penyerang.

SHOW GRANTS hanya menampilkan hak istimewa yang diberikan secara eksplisit ke akun yang disebutkan. Hak istimewa lainnya mungkin tersedia untuk akun, tetapi mereka tidak ditampilkan. Misalnya, jika akun anonim ada, akun yang dinamai mungkin dapat menggunakan hak istimewanya, tetapi SHOW GRANTS tidak akan menampilkannya.

SHOW GRANTS memerlukan hak istimewa SELECT untuk database mysql.

berseri-seri
sumber
SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Sandip Bhattacharya