2011-09-22 14 views

答えて

7

mysqlデータベース(実際にはmysqlサーバ内のmysqlという名前の実際のデータベース)を参照してください。

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' 

あなたが必要なものが表示されるはずです:DB /テーブル/列PRIVSが格納されている3つのテーブル(dbtables_priv、およびcolumns_priv)があります。

24

すべてのユーザーとそのおおよその特権が良好です。パスワードがあれば、それは暗号化された文字列になります。そうでない場合、このフィールドは空白です。選択は非常に一般的な特権です。 insertは、データベース内のテーブル操作を可能にします。シャットダウンは大きなシステム変更を可能にし、rootだけが使用できるようにする必要があります。権限を与える権限は他の権限とは別です。

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

個々のデータベースの権限を表示します。

​​
12
  • database privilegesmysql.columns_priv

  • routine privilegesに格納されているmysql.tables_priv

  • column privilegesに格納されているmysql.db

  • table privilegesに格納されているがに格納されています

    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 ; 
    

    例:

    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) 
    

あなたは特権を一覧表示する店舗の手順を定義することができます

関連する問題