Bagaimana cara mengetahui semua pengguna yang dapat mengakses database?
Bagaimana cara mengetahui semua pengguna yang dapat mengakses database?
Jawaban:
Sambungkan ke instance mysql sebagai pengguna admin (umumnya sebagai root) dan berikan perintah berikut ...
select user from mysql.db where db='DB_NAME';
select user from mysql.db
tanpa kualifikasi mengembalikan 2 baris kosong juga.
jawaban pengguna79644 mendapatkan pengguna dengan hak istimewa tingkat basis data tetapi akan merindukan pengguna dengan hanya tingkat tingkat tabel, tingkat kolom, atau tingkat prosedur. Untuk menemukan semuanya, gunakan pernyataan berikut:
SELECT user,host FROM db WHERE db='name';
SELECT user,host FROM tables_priv WHERE db='name';
SELECT user,host FROM columns_priv WHERE db='name';
SELECT user,host FROM procs_priv WHERE db='name';
Di MySQL 5.5 setidaknya, seolah-olah memiliki hak istimewa tingkat kolom menyiratkan bahwa Anda memiliki hak istimewa tingkat-tabel. Memiliki hak istimewa tingkat-tabel tidak berarti bahwa Anda memiliki hak istimewa tingkat basis data. Tidak yakin tentang hak istimewa tingkat prosedur.
ERROR 1046 (3D000): No database selected
mysql
database. Di situlah semua data yang digunakan oleh MySQL disimpan. Berikan perintah USE mysql;
untuk menambahkan nama database ke nama tabel, seperti FROM mysql.db
atauFROM mysql.tables_priv
# current users that access the db
mysql> show processlist;
+-----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------+------+---------+------+-------+------------------+
| 214 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+-----+------+-----------+------+---------+------+-------+------------------+
# who can access what at anytime and his privilege level
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
# what privileges are available
mysql> show privileges;
Anda harus ingat, bahwa MySQLGRANT
untuk database dapat berisi karakter wildcard . Ini harus dipertanggungjawabkan dengan menggunakan LIKE
dalam kueri:
SELECT user,host FROM db WHERE 'name' LIKE db;
SELECT user,host FROM tables_priv WHERE db='name';
SELECT user,host FROM columns_priv WHERE db='name';
SELECT user,host FROM procs_priv WHERE db='name';