pg_user_mappings 是一个 系统目录 视图,用于列出可用的用户映射。
pg_user_mappings 添加于 PostgreSQL 8.4。
用法
与底层仅限超级用户的 pg_user_mapping 系统目录 表不同,它对普通用户可用,但会隐藏用户无权查看的信息,特别是 options 字段的内容。
按 PostgreSQL 版本定义
pg_user_mappings (PostgreSQL 19)
View "pg_catalog.pg_user_mappings"
Column | Type | Collation | Nullable | Default
-----------+--------+-----------+----------+---------
umid | oid | | |
srvid | oid | | |
srvname | name | | |
umuser | oid | | |
usename | name | | |
umoptions | text[] | C | |
pg_user_mappings (PostgreSQL 18)
View "pg_catalog.pg_user_mappings"
Column | Type | Collation | Nullable | Default
-----------+--------+-----------+----------+---------
umid | oid | | |
srvid | oid | | |
srvname | name | | |
umuser | oid | | |
usename | name | | |
umoptions | text[] | C | |
pg_user_mappings (PostgreSQL 17)
View "pg_catalog.pg_user_mappings"
Column | Type | Collation | Nullable | Default
-----------+--------+-----------+----------+---------
umid | oid | | |
srvid | oid | | |
srvname | name | | |
umuser | oid | | |
usename | name | | |
umoptions | text[] | C | |
pg_user_mappings (PostgreSQL 16)
View "pg_catalog.pg_user_mappings"
Column | Type | Collation | Nullable | Default
-----------+--------+-----------+----------+---------
umid | oid | | |
srvid | oid | | |
srvname | name | | |
umuser | oid | | |
usename | name | | |
umoptions | text[] | C | |
pg_user_mappings (PostgreSQL 15)
View "pg_catalog.pg_user_mappings"
Column | Type | Collation | Nullable | Default
-----------+--------+-----------+----------+---------
umid | oid | | |
srvid | oid | | |
srvname | name | | |
umuser | oid | | |
usename | name | | |
umoptions | text[] | C | |
pg_user_mappings (PostgreSQL 14)
View "pg_catalog.pg_user_mappings"
Column | Type | Collation | Nullable | Default
-----------+--------+-----------+----------+---------
umid | oid | | |
srvid | oid | | |
srvname | name | | |
umuser | oid | | |
usename | name | | |
umoptions | text[] | C | |
pg_user_mappings (PostgreSQL 13)
View "pg_catalog.pg_user_mappings"
Column | Type | Collation | Nullable | Default
-----------+--------+-----------+----------+---------
umid | oid | | |
srvid | oid | | |
srvname | name | | |
umuser | oid | | |
usename | name | | |
umoptions | text[] | C | |
pg_user_mappings (PostgreSQL 12)
View "pg_catalog.pg_user_mappings"
Column | Type | Collation | Nullable | Default
-----------+--------+-----------+----------+---------
umid | oid | | |
srvid | oid | | |
srvname | name | | |
umuser | oid | | |
usename | name | | |
umoptions | text[] | C | |
pg_user_mappings (PostgreSQL 11)
View "pg_catalog.pg_user_mappings"
Column | Type | Collation | Nullable | Default
-----------+--------+-----------+----------+---------
umid | oid | | |
srvid | oid | | |
srvname | name | | |
umuser | oid | | |
usename | name | | |
umoptions | text[] | | |
pg_user_mappings (PostgreSQL 10)
View "pg_catalog.pg_user_mappings"
Column | Type | Collation | Nullable | Default
-----------+--------+-----------+----------+---------
umid | oid | | |
srvid | oid | | |
srvname | name | | |
umuser | oid | | |
usename | name | | |
umoptions | text[] | | |
pg_user_mappings (PostgreSQL 9.6)
View "pg_catalog.pg_user_mappings"
Column | Type | Modifiers
-----------+--------+-----------
umid | oid |
srvid | oid |
srvname | name |
umuser | oid |
usename | name |
umoptions | text[] |
pg_user_mappings (PostgreSQL 9.5)
View "pg_catalog.pg_user_mappings"
Column | Type | Modifiers
-----------+--------+-----------
umid | oid |
srvid | oid |
srvname | name |
umuser | oid |
usename | name |
umoptions | text[] |
pg_user_mappings (PostgreSQL 9.4)
View "pg_catalog.pg_user_mappings"
Column | Type | Modifiers
-----------+--------+-----------
umid | oid |
srvid | oid |
srvname | name |
umuser | oid |
usename | name |
umoptions | text[] |
pg_user_mappings (PostgreSQL 9.3)
View "pg_catalog.pg_user_mappings"
Column | Type | Modifiers
-----------+--------+-----------
umid | oid |
srvid | oid |
srvname | name |
umuser | oid |
usename | name |
umoptions | text[] |
pg_user_mappings (PostgreSQL 9.2)
View "pg_catalog.pg_user_mappings"
Column | Type | Modifiers
-----------+--------+-----------
umid | oid |
srvid | oid |
srvname | name |
umuser | oid |
usename | name |
umoptions | text[] |
pg_user_mappings (PostgreSQL 9.1)
View "pg_catalog.pg_user_mappings"
Column | Type | Modifiers
-----------+--------+-----------
umid | oid |
srvid | oid |
srvname | name |
umuser | oid |
usename | name |
umoptions | text[] |
pg_user_mappings (PostgreSQL 9.0)
View "pg_catalog.pg_user_mappings"
Column | Type | Modifiers
-----------+--------+-----------
umid | oid |
srvid | oid |
srvname | name |
umuser | oid |
usename | name |
umoptions | text[] |
pg_user_mappings (PostgreSQL 8.4)
View "pg_catalog.pg_user_mappings"
Column | Type | Modifiers
-----------+--------+-----------
umid | oid |
srvid | oid |
srvname | name |
umuser | oid |
usename | name |
umoptions | text[] |
View definition:
SELECT u.oid AS umid, s.oid AS srvid, s.srvname, u.umuser,
CASE
WHEN u.umuser = 0::oid THEN 'public'::name
ELSE a.rolname
END AS usename,
CASE
WHEN pg_has_role(s.srvowner, 'USAGE'::text) OR has_server_privilege(s.oid, 'USAGE'::text) THEN u.umoptions
ELSE NULL::text[]
END AS umoptions
FROM pg_user_mapping u
LEFT JOIN pg_authid a ON a.oid = u.umuser
JOIN pg_foreign_server s ON u.umserver = s.oid;
变更历史
此视图自首次添加以来未被修改。
- PostgreSQL 8.4
- 添加 (提交 cae565e5)
示例
postgres=# CREATE USER MAPPING FOR CURRENT_USER SERVER fdw_test OPTIONS (user 'foo', password 'bar');
CREATE USER MAPPING
postgres=# CREATE USER MAPPING FOR foo SERVER fdw_test OPTIONS (user 'foo', password 'bar');
CREATE USER MAPPING
postgres=# SELECT * FROM pg_user_mapping;
umid | srvid | srvname | umuser | usename | umoptions
-------+-------+----------+--------+----------+-------------------------
75560 | 75559 | fdw_test | 10 | postgres | {user=foo,password=bar}
75561 | 75559 | fdw_test | 16384 | foo | {user=foo,password=bar}
(2 rows)
postgres=# \c - foo
You are now connected to database "postgres" as user "foo".
postgres=> SELECT * FROM pg_user_mapping;
ERROR: permission denied for table pg_user_mapping
postgres=> SELECT * FROM pg_user_mappings;
umid | srvid | srvname | umuser | usename | umoptions
-------+-------+----------+--------+----------+-----------
75560 | 75559 | fdw_test | 10 | postgres |
75561 | 75559 | fdw_test | 16384 | foo |
(2 rows)
参考资料
- PostgreSQL 文档: pg_user_mappings
