Як знати всіх користувачів, які можуть отримати доступ до бази даних?
Як знати всіх користувачів, які можуть отримати доступ до бази даних?
Відповіді:
Підключіться до екземпляра mysql як користувача адміністратора (як правило, як root) і дайте таку команду ...
select user from mysql.db where db='DB_NAME';
select user from mysql.db
без кваліфікації також повертає 2 порожні рядки.
Відповідь 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 здається, що наявність привілеїв на рівні стовпців означає, що у вас є пільги на рівні таблиці. Наявність привілеїв рівня таблиці не означає, що у вас є привілеї на рівні бази даних. Не впевнений у привілеях на рівні процедури.
ERROR 1046 (3D000): No database selected
mysql
базу даних. Тут зберігаються всі дані, які використовує MySQL. Або дайте команду USE mysql;
додати ім'я бази даних до назв таблиці, наприклад, FROM mysql.db
абоFROM 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;
Ви повинні мати на увазі, що MySQLGRANT
для баз даних може містити символи підстановки . Це потрібно врахувати, використовуючи 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';