Một chút lẻ nếu lệnh \ l + chỉ hiển thị một số người dùng có quyền/đặc quyền để kết nối với cơ sở dữ liệu. Tôi không thể lặp lại bản thân mình khi cài đặt PostgreSQL 8.4 (Ubuntu 10.04 LTS). Phiên bản nào bạn đang sử dụng?
Dù sao, có lẽ bạn có thể kiểm tra bảng giữ của ACL cho rằng cơ sở dữ liệu cụ thể và từ đó suy ra cho dù người dùng có đặc quyền đúng hay không:
SELECT datname as "Relation", datacl as "Access permissions" FROM pg_database WHERE datname = 'databasename';
Nếu bạn chỉ muốn kiểm tra một người dùng mà bạn có thể làm điều gì đó như sau:
SELECT * FROM has_database_privilege('username', 'database', 'connect');
Quyền/đặc quyền được diễn giải như thế nào? Các đặc quyền sẽ được đọc như sau:
user = privileges/granted by
Người dùng bỏ qua có nghĩa là PUBLIC được cấp đặc quyền, nghĩa là tất cả các vai trò. Ví dụ: nếu đặc quyền là =Tc/postgres
thì tất cả các vai trò có thể kết nối và tạo các bảng tạm thời trong cơ sở dữ liệu cụ thể đó và đó là người dùng postgres
đã cấp đặc quyền.
Có một bản tóm tắt tại trang PostgreSQL giải thích các đặc quyền khác nhau tại trang PostgreSQL http://www.postgresql.org/docs/9.2/static/sql-grant.html.
rolename=xxxx -- privileges granted to a role
=xxxx -- privileges granted to PUBLIC
r -- SELECT ("read")
w -- UPDATE ("write")
a -- INSERT ("append")
d -- DELETE
D -- TRUNCATE
x -- REFERENCES
t -- TRIGGER
X -- EXECUTE
U -- USAGE
C -- CREATE
c -- CONNECT
T -- TEMPORARY
arwdDxt -- ALL PRIVILEGES (for tables, varies for other objects)
* -- grant option for preceding privilege
/yyyy -- role that granted this privilege
Nguồn
2011-06-03 06:24:30
Wow câu hỏi này cũ và có vẻ như tôi chưa bao giờ chọn câu trả lời. Tôi nghĩ đó là vì lúc đó tôi đang tìm kiếm thứ gì đó hơn. Tôi đã không xem xét điều này trong một thời gian, vì vậy tôi xin lỗi nếu điều này là sai. Tôi đoán rằng tệp pg_hba.conf cho phép người dùng kết nối với máy chủ, mà không có quyền cấp phép rõ ràng đang được truyền. Do đó, các cơ sở dữ liệu chưa bị khóa sẽ có thể được truy cập bởi bất kỳ ai hầu như được cho phép, mà lệnh '\ l' có thể không bao giờ có thể biết được. – vol7ron