Como saber todos os usuários que podem acessar um banco de dados (MySQL)?

16

Como conhecer todos os usuários que podem acessar um banco de dados?

    
por user79483 27.04.2011 / 14:25

4 respostas

10

Conecte-se à instância do mysql como um usuário admin (geralmente como root) e forneça o seguinte comando ...

select user from mysql.db where db='DB_NAME';
    
por 27.04.2011 / 14:31
10

A resposta de user79644 obtém os usuários com privilégios no nível de banco de dados, mas perderá usuários com privilégios apenas no nível da tabela, no nível da coluna ou no nível do procedimento. Para encontrar todos eles, use as seguintes declarações:

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

No MySQL 5.5, pelo menos, parece que ter privilégios no nível da coluna significa que você tem privilégios de nível de tabela. Ter privilégios no nível da tabela não implica que você tenha privilégios no nível do banco de dados. Não tenho certeza sobre os privilégios no nível do procedimento.

    
por 23.11.2011 / 17:41
5
# 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;
    
por 27.04.2011 / 16:43
2

Você deve ter em mente que o MySQL GRANT para bancos de dados pode conter caracteres curinga . Isso deve ser contabilizado usando LIKE na consulta:

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';
    
por 19.01.2012 / 14:33

Tags