首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PostgreSQL:查看数据库连接权限

PostgreSQL:查看数据库连接权限
EN

Stack Overflow用户
提问于 2011-04-19 22:04:54
回答 2查看 42K关注 0票数 25

您如何查看已获得GRANT CONNECT ON DATABASE <database> TO <user>的用户

  • \dp -列出表/视图模式permissions
  • \l+ -
    • 不列出可以访问数据库的所有用户
EN

回答 2

Stack Overflow用户

发布于 2011-06-03 14:24:30

如果\l+命令只显示一些有权限/特权连接到数据库的用户,那就有点奇怪了。我不能在PostgreSQL 8.4安装(Ubuntu10.04LTS)上重复这一点。您使用的是什么版本?

无论如何,也许您可以检查包含该特定数据库的ACL的表,并从中推断用户是否具有正确的权限:

代码语言:javascript
复制
SELECT datname as "Relation", datacl as "Access permissions" FROM pg_database WHERE datname = 'databasename';

如果你只想检查一个用户,你可以这样做:

代码语言:javascript
复制
SELECT * FROM has_database_privilege('username', 'database', 'connect');

如何解释权限/特权?权限应按如下方式读取:

代码语言:javascript
复制
user = privileges / granted by 

省略user意味着PUBLIC被授予特权,即所有角色。例如,如果权限是=Tc/postgres,那么所有角色都可以连接并在该特定数据库中创建临时表,而授予该权限的是postgres用户。

在PostgreSQL站点上有一个概要,解释了不同的特权:https://www.postgresql.org/docs/current/ddl-priv.html#PRIVILEGE-ABBREVS-TABLE

代码语言:javascript
复制
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
票数 24
EN

Stack Overflow用户

发布于 2011-04-20 05:59:41

我使用的是Postgres8.4和Postgres9.0中的psql,命令\l\l+给出了列Access Privileges,其中包含以下条目:

代码语言:javascript
复制
<user_name>=c/<database_name>

早些时候,我按照您的要求给了用户connect权限。

正如http://www.postgresql.org/docs/9.0/static/sql-grant.html页面上所述,这里的c字母表示Connect

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5717611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档