如何查看已发布的用户GRANT CONNECT ON DATABASE <database> TO <user>
?
答案 0 :(得分:19)
如果\ l +命令只显示一些具有连接数据库权限/特权的用户,则有点奇怪。我不能在PostgreSQL 8.4安装(Ubuntu 10.04 LTS)上重复这一点。你用的是哪个版本?
无论如何,也许您可以检查持有该特定数据库的ACL的表,并从中推断该用户是否具有正确的权限:
SELECT datname as "Relation", datacl as "Access permissions" FROM pg_database WHERE datname = 'databasename';
如果您只想检查一个用户,您可以执行以下操作:
SELECT * FROM has_database_privilege('username', 'database', 'connect');
如何解释权限/权限?权限应如下所示:
user = privileges / granted by
省略用户意味着PUBLIC被授予特权,即所有角色。例如,如果权限为=Tc/postgres
,那么所有角色都可以在该特定数据库中连接并创建临时表,并且是授予该权限的postgres
用户。
PostgreSQL网站上有一个概要,解释了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
答案 1 :(得分:0)
我正在使用postgres 8.4和postgres 9.0中的psql,命令\l
或\l+
为我提供了Access Privileges
列,我有条目:
<user_name>=c/<database_name>
早些时候,我根据需要为用户提供了连接权限。
正如页面http://www.postgresql.org/docs/9.0/static/sql-grant.html所述,此处c
字母表示Connect
。