2011-09-22 20 views

Trả lời

7

Tìm trong cơ sở dữ liệu mysql (một db thực tế có tên mysql bên trong máy chủ mysql, chỉ để rõ ràng). Có ba bảng (db, tables_priv, và columns_priv) nơi db/table/privs cột được lưu trữ:

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' 

sẽ hiển thị cho bạn những gì bạn cần.

24

Chế độ xem tốt của tất cả người dùng và đặc quyền gần đúng của họ. Nếu có một mật khẩu, nó sẽ bằng một chuỗi được mã hóa; nếu không, trường này trống. Chọn là một giáo sư rất chung chung; chèn cho phép thao tác bảng trong cơ sở dữ liệu; tắt máy cho phép thay đổi hệ thống lớn và chỉ có thể sử dụng được bằng root; khả năng cấp quyền tách biệt với các quyền khác.

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

Xem các quyền đối với cơ sở dữ liệu riêng lẻ.

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

Bạn có thể định nghĩa một thủ tục lưu trữ để liệt kê các đặc quyền:

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 ; 

dụ:

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) 
Các vấn đề liên quan