2010-10-07 16 views
6

¿Alguien sabe la sintaxis mySQL para mostrar los nombres de bases de datos que un usuario específico tiene el privilegio de ver en una base de datos mySQL? Supongamos que el usuario está 'dimitris' accediendo a una base de datos en 'localhost', ¿cuál sería la sintaxis para ver todas las bases de datos que tiene el privilegio de seleccionar, actualizar, insertar, etc.?mySQL show database for user

Dimitris

Respuesta

3

Puede obtener la lista de las bases de datos que tiene acceso con:

SHOW DATABASES; 

Si desea obtener la lista de algún otro usuario que el usuario que ha iniciado sesión como, tienes que consultar la tabla mysql.db.

+0

Gracias por la respuesta rápida chicos. ¡Eso era exactamente lo que necesitaba! – Sfairas

+0

Carece de información sobre cuál debería ser la consulta 'mysql.db'. Por esa razón, creo que la respuesta de Lekensteyn es más completa. – inspirednz

9

Para el usuario que ha iniciado sesión actualmente, puede usar SHOW DATABASES;. Pero, si el usuario tiene el privilegio SHOW DATABASES;, podrá ver todas las bases de datos, incluso si no tiene acceso. (reference)

Suponiendo que usted ha leído el acceso a la tabla mysql.db, puede utilizar:

SELECT * FROM mysql.db WHERE User="dimitris"; 

Esto devolverá un conjunto de resultados, con Host (por ejemplo localhost), Db (por ejemplo somedatabase), User (por ejemplo, dimitris) y los privilegios para esa base de datos (Select_priv, Update_priv, etc.)

+0

Gracias. Una respuesta más completa que la aceptada. Votando. – inspirednz