PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tìm hiểu xem người dùng có được phép chọn / cập nhật / ... một bảng / hàm / ... trong PostgreSQL hay không

Tôi nhận thấy rằng một cách tiếp cận tốt hơn (và dường như tôi nhớ điều này được lấy từ một số truy vấn được tích hợp trong psql hoặc có thể là các chế độ xem information_schema) là sử dụng đặc quyền has_*_privilege và chỉ cần áp dụng chúng cho một tập hợp tất cả các kết hợp có thể có của người dùng và đối tượng. Điều này cũng sẽ tính đến việc có quyền truy cập vào một đối tượng thông qua một số vai trò nhóm.

Ví dụ:điều này sẽ hiển thị những người dùng nào có quyền truy cập vào các bảng và chế độ xem không phải danh mục:

select usename, nspname || '.' || relname as relation,
       case relkind when 'r' then 'TABLE' when 'v' then 'VIEW' end as relation_type,
       priv
from pg_class join pg_namespace on pg_namespace.oid = pg_class.relnamespace,
     pg_user,
     (values('SELECT', 1),('INSERT', 2),('UPDATE', 3),('DELETE', 4)) privs(priv, privorder)
where relkind in ('r', 'v')
      and has_table_privilege(pg_user.usesysid, pg_class.oid, priv)
      and not (nspname ~ '^pg_' or nspname = 'information_schema')
order by 2, 1, 3, privorder;

Các đặc quyền có thể có được nêu chi tiết trong mô tả của has_*_privilege chức năng tại http:// www .postgresql.org / docs / current / static / functions-info.html # FUNCTIONS-INFO-ACCESS-TABLE .

'CREATE TEMP' là một đặc quyền cấp cơ sở dữ liệu:nó cho phép người dùng sử dụng pg_temp_* lược đồ. Nó có thể được kiểm tra bằng has_database_privilege(useroid, datoid, 'TEMP') .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rake spec thất bại trong hầu hết các bài kiểm tra, nhưng rails vẫn hoạt động tốt trên nguồn Diaspora

  2. DROP TABLE IF EXISTS Ví dụ trong PostgreSQL

  3. psql.exe - xác thực mật khẩu không thành công trong Windows

  4. Các ngày trong hệ thập lục phân của Microsoft

  5. Ký tự dòng mới của PostgreSQL