Как знать всех пользователей, которые могут получить доступ к базе данных (MySQL)?

Вы можете разжигать Wireshark на одном из беспроводных клиентов - может быть некоторый широковещательный трафик от устройства Вашего клиента, которое дает некоторый ключ к разгадке, каков его IP.

19
задан 21 September 2018 в 11:08
4 ответа

Соединитесь с mysql экземпляром как администраторский пользователь (обычно как корень) и дайте следующую команду...

select user from mysql.db where db='DB_NAME';
14
ответ дан 2 December 2019 в 20:17
# 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;
7
ответ дан 2 December 2019 в 20:17

Ответ user79644 получает пользователей с привилегиями уровня базы данных, но не учитывает пользователей с привилегиями только уровня таблицы, уровня столбца или уровня процедуры. Чтобы найти их все, используйте следующие операторы:

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';

По крайней мере, в MySQL 5.5 кажется, что наличие привилегий на уровне столбца подразумевает, что у вас есть привилегии на уровне таблицы. Наличие привилегий на уровне таблицы не означает, что у вас есть привилегии на уровне базы данных. Не уверен насчет привилегий на уровне процедур.

10
ответ дан 2 December 2019 в 20:17

Вы должны помнить, что MySQL GRANT для баз данных может содержать подстановочных знаков . Это необходимо учитывать, используя LIKE в запросе:

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';
2
ответ дан 2 December 2019 в 20:17

Теги

Похожие вопросы