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=#