PostgreSQL:如何查看数据库连接权限?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

如何查看已发布的用户?GRANT CONNECT ON DATABASE <database> TO <user>?

  • \dp-列表表/视图权限
  • \dn+-列出模式权限
  • \l+没有列出所有可以访问数据库的用户
提问于
用户回答回答于

我使用Postgres 8.4和Postgres 9.0中的psql和命令\l\l+给我列Access Privileges在我有条目的地方:

<user_name>=c/<database_name>

用户回答回答于

也许您可以检查保存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 

例如,如果特权是=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

扫码关注云+社区