has_server_privilege()
是一个系统函数,用于确定用户是否对指定的外部服务器拥有指定的权限。
has_server_privilege()
在 PostgreSQL 8.4 中添加。
用法
has_server_privilege(server
text
oroid
,privilege
text
)
has_server_privilege(user
text
oroid
,server
text
oroid
,privilege
text
)
唯一可以通过 has_server_privilege()
查询的权限是:USAGE
。
更改历史记录
- PostgreSQL 8.4
- 添加 (提交 cae565e5)
示例
以下示例假设一个 FDW 设置如下
postgres=# \des List of foreign servers Name | Owner | Foreign-data wrapper --------+----------+---------------------- pg_fdw | postgres | postgres_fdw (1 row)
确定当前用户是否对指定的外部服务器拥有 USAGE
权限
postgres=# SELECT has_server_privilege('pg_fdw', 'USAGE'); has_server_privilege ---------------------- t (1 row)
确定指定用户是否对指定的外部服务器拥有 USAGE
权限
postgres=# SELECT has_server_privilege('foo', 'pg_fdw', 'USAGE'); has_server_privilege ---------------------- f (1 row)
尝试为该对象类型确定未识别的权限
postgres=# SELECT has_server_privilege('pg_fdw', 'UPDATE'); ERROR: unrecognized privilege type: "UPDATE"
尝试为不存在的外部服务器确定权限
postgres=# SELECT has_server_privilege('microfiche_archive_2nd_floor', 'USAGE'); ERROR: server "microfiche_archive_2nd_floor" does not exist
参考
- PostgreSQL 文档: 访问权限查询函数