has_database_privilege()

确定用户是否对数据库具有权限的系统函数

has_database_privilege() 是一个系统函数,用于确定用户是否对指定的数据库拥有指定的权限

has_database_privilege()PostgreSQL 7.3 中添加。

用法

has_database_privilege() 有两种形式

  • has_database_privilege(数据库 TEXT OID, 权限 TEXT)
  • has_database_privilege(用户 TEXT OID, 数据库 TEXT OID, 权限 TEXT)

可以查询以下权限

  • CREATE
  • CONNECT
  • TEMP / TEMPORARY

如果以逗号分隔的列表形式提供,则可以查询多个权限。请注意,如果一个或多个权限可用,则该函数将始终返回 't' (TRUE)。

更改历史记录

示例

确定当前用户是否对指定的数据库具有 CONNECT 权限

postgres=# SELECT has_database_privilege('postgres', 'CONNECT');
 has_database_privilege 
------------------------
 t
(1 row)

确定指定的用户是否对指定的表具有 CREATE 权限

postgres=# SELECT has_database_privilege('someuser', 'postgres', 'CREATE');
 has_database_privilege 
------------------------
 f
(1 row)

查询多个权限

postgres=# SELECT has_database_privilege('someuser', 'postgres', 'CONNECT, CREATE');
 has_database_privilege 
------------------------
 t
(1 row)

请注意,即使 CREATE 权限不可用,该函数也会返回 't' (TRUE)。

尝试为这种对象类型确定未识别的权限

postgres=# SELECT has_database_privilege('postgres', 'DELETE');
ERROR:  unrecognized privilege type: "DELETE"

尝试为不存在的数据库确定权限

postgres=# SELECT has_database_privilege('somedbname', 'CONNECT');
ERROR:  database "somedbname" does not exist

分类

系统函数用户和角色

反馈

提交任何关于 "has_database_privilege()" 的评论、建议或更正 此处