2011-09-22 17 views

risposta

7

Consultare il database mysql (un db effettivo denominato mysql all'interno del server mysql, per essere chiari). Ci sono tre tavoli (db, tables_priv, e columns_priv) in cui sono memorizzati i db/tavolo/privs colonna:

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' 

dovrebbe mostrare quello che ti serve.

24

Una buona visione di tutti gli utenti e dei loro privilegi approssimativi. Se c'è una password, lo farà con una stringa enciclopedia; in caso contrario, questo campo è vuoto. Select è un privilegio molto generale; insert consente la manipolazione della tabella all'interno di un database; shutdown consente le principali modifiche al sistema e dovrebbe essere utilizzabile solo da root; la possibilità di concedere autorizzazioni è separata dalle altre.

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

Visualizza le autorizzazioni per i singoli database.

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

È possibile definire una procedura di memorizzazione per elencare i privilegi:

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 ; 

esempio:

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) 
Problemi correlati