2011-09-22 18 views

Respuesta

7

Busque en la base de datos mysql (una base de datos real llamada mysql dentro del servidor mysql, solo para que quede claro). Hay tres tablas (db, tables_priv y columns_priv) donde se almacena la tabla/db/privs columna:

SELECT 'db', User, Host 
FROM db 
WHERE Db='mydatabase' 

UNION 

SELECT 'table', User, Host 
FROM tables_priv 
WHERE Db='mydatabase' 

UNION 

SELECT 'col', User, Host 
FROM columns_priv 
WHERE Db='mydatabase' 

que debe mostrar lo que necesita.

24

Una buena vista de todos los usuarios y sus privilegios aproximados. Si hay una contraseña, lo hará mediante una cadena encriptada; si no, este campo está en blanco. Select es un privilegio muy general; insert permite la manipulación de la tabla dentro de una base de datos; el apagado permite cambios importantes en el sistema, y ​​solo debería ser utilizable por root; la capacidad de otorgar permisos está separada de las demás.

SELECT user, host, password, select_priv, insert_priv, shutdown_priv, grant_priv 
FROM mysql.user 

Ver los permisos de las bases de datos individuales.

SELECT user, host, db, select_priv, insert_priv, grant_priv FROM mysql.db 
12

Se puede definir un procedimiento almacenado para enumerar los privilegios:

delimiter // 

CREATE PROCEDURE list_privileges (IN db_name CHAR(50)) 
BEGIN 
    SELECT concat(Db,'.', '*') as 'what', User, Host, '...' as 'perms' 
    FROM mysql.db 
    WHERE Db=db_name 
    UNION 
    SELECT concat(Db,'.', Table_name), User, Host, table_priv 
    FROM mysql.tables_priv 
    WHERE Db=db_name and table_priv != '' 
    UNION 
    SELECT concat(Db,'.', Table_name, '(', Column_name,')'), User, Host, Column_priv 
    FROM mysql.columns_priv 
    WHERE Db=db_name 
    UNION 
    SELECT concat(Db,'.', Routine_name, '()'), User, Host, Proc_priv 
    FROM mysql.procs_priv 
    WHERE Db=db_name; 
END// 

delimiter ; 

ejemplo:

mysql> call list_privileges("testlink2"); 
+-----------------------------+-----------+-----------+---------+ 
| what      | User  | Host  | perms | 
+-----------------------------+-----------+-----------+---------+ 
| testlink2.*     | testlink2 | %   | ...  | 
| testlink2.*     | testlink2 | localhost | ...  | 
| testlink2.executions  | testlink2 | %   | Select | 
| testlink2.users(id)   | testlink2 | %   | Select | 
| testlink2.list_privileges() | testlink2 | %   | Execute | 
+-----------------------------+-----------+-----------+---------+ 
5 rows in set (0.00 sec) 

Query OK, 0 rows affected (0.00 sec) 
Cuestiones relacionadas