¿Cómo conocer a todos los usuarios que pueden acceder a una base de datos?
¿Cómo conocer a todos los usuarios que pueden acceder a una base de datos?
Respuestas:
Conéctese a la instancia de mysql como usuario administrador (generalmente como root) y dé el siguiente comando ...
select user from mysql.db where db='DB_NAME';
select user from mysql.db
sin calificación devuelve 2 filas en blanco también.
La respuesta de user79644 les otorga a los usuarios privilegios a nivel de base de datos, pero los extrañará solo con privilegios a nivel de tabla, columna o procedimiento. Para encontrarlos todos, use las siguientes declaraciones:
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';
Al menos en MySQL 5.5, parece que tener privilegios a nivel de columna implica que tiene privilegios a nivel de tabla. Tener privilegios a nivel de tabla no implica que tenga privilegios a nivel de base de datos. No estoy seguro acerca de los privilegios a nivel de procedimiento.
ERROR 1046 (3D000): No database selected
mysql
base de datos. Ahí es donde se almacenan todos los datos utilizados por MySQL. Dé el comando USE mysql;
de agregar el nombre de la base de datos a los nombres de la tabla, como FROM mysql.db
oFROM 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;
Debe tener en cuenta que MySQLGRANT
para bases de datos puede contener caracteres comodín . Esto debe tenerse en cuenta mediante el uso LIKE
en la 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';