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