db_user_namespace 是一个 配置参数,它启用每个数据库的用户名称。
db_user_namespace 在 PostgreSQL 7.3 中添加,并在 PostgreSQL 17 中移除。
默认值
db_user_namespace 的默认值为:off。
用法
如果启用,用户应创建为 username@dbname。在连接时,服务器会将 @ 和数据库名称附加到客户端传递的 user 值上。
适用于所有数据库的全局用户名称(例如 postgres)必须通过在客户端传递的用户名后附加 @ 来指定:这将被服务器移除。
包含 @ 符号的用户名称必须加引号。
请注意,md5 密码认证不支持,并且如果 db_user_namespace 已启用,任何行中包含 md5 作为认证方法的 pg_hba.conf 文件都将被拒绝。支持 password 和 scram-sha-256 方法。
按 PostgreSQL 版本详细信息
db_user_namespace (PostgreSQL 16)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接与认证 / 认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:db_user_namespace
db_user_namespace (PostgreSQL 15)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接与认证 / 认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:db_user_namespace
db_user_namespace (PostgreSQL 14)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接与认证 / 认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:db_user_namespace
db_user_namespace (PostgreSQL 13)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接与认证 / 认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:db_user_namespace
db_user_namespace (PostgreSQL 12)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接与认证 / 认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:db_user_namespace
db_user_namespace (PostgreSQL 11)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接与认证 / 认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:db_user_namespace
db_user_namespace (PostgreSQL 10)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:db_user_namespace
db_user_namespace (PostgreSQL 9.6)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:db_user_namespace
db_user_namespace (PostgreSQL 9.5)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:db_user_namespace
db_user_namespace (PostgreSQL 9.4)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
文档:db_user_namespace
db_user_namespace (PostgreSQL 9.3)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
文档:db_user_namespace
db_user_namespace (PostgreSQL 9.2)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
文档:db_user_namespace
db_user_namespace (PostgreSQL 9.1)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
文档:db_user_namespace
db_user_namespace (PostgreSQL 9.0)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
文档:db_user_namespace
db_user_namespace (PostgreSQL 8.4)
| 设置 |
off |
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
off |
| 重置值 |
off |
| 源文件 |
|
| 源行 |
|
文档:db_user_namespace
db_user_namespace (PostgreSQL 8.3)
| 设置 |
|
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
文档:db_user_namespace
db_user_namespace (PostgreSQL 8.2)
| 设置 |
|
| 单位 |
|
| 类别 |
连接和认证 / 安全与认证 |
| 简短描述 |
启用每个数据库的用户名称。 |
| 扩展描述 |
|
| 上下文 |
sighup |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
文档:db_user_namespace
变更历史
示例
以下示例假设 db_user_namespace 已设置为 on。
创建每个数据库的用户
postgres=# CREATE USER "bar@postgres" PASSWORD 'foo';
CREATE ROLE
必须存在一个类似于以下的 pg_hba.conf 条目
# TYPE DATABASE USER ADDRESS METHOD
host all bar@postgres 127.0.0.1/32 scram-sha-256
然后用户可以使用正常的连接字符串访问 postgres 数据库,例如使用
psql -d 'user=foo dbname=postgres host=localhost port=5432'
Password for user foo:
psql (16.2)
Type "help" for help.
postgres=>
请注意,即使如上例所示,用户的 pg_hba.conf 中的 DATABASE 条目设置为 all,用户也只能访问用户名中包含的数据库。
应允许访问多个数据库的用户在其用户名后附加 @ 符号,否则将假定用户名是为每个数据库用户设计的。
$ psql -d 'user=postgres dbname=postgres host=localhost port=5432'
psql: error: connection to server at "localhost" (127.0.0.1), port 5432 failed: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "postgres@postgres", database "postgres", no encryption
$ psql -d 'user=postgres@ dbname=postgres host=localhost port=5432'
psql (17devel)
Type "help" for help.
postgres=#