db_user_namespace

启用每个数据库用户名的 GUC
此条目涉及不再可用/维护的 PostgreSQL 功能、应用程序/实用程序、网站或其他主题。

db_user_namespace 是一个 配置参数,它启用每个数据库的用户名称。

db_user_namespacePostgreSQL 7.3 中添加,并在 PostgreSQL 17 中移除。

默认值

db_user_namespace 的默认值为:off

用法

如果启用,则应将用户创建为 username@dbname。在连接时,服务器会将 @ 和数据库名称附加到客户端传递的 user 值。

对所有数据库有效的全局用户名(例如 postgres)必须通过将 @ 附加到客户端传递的用户名称来指定:服务器将删除此符号。

包含 @ 符号的用户名必须用引号括起来。

请注意,不支持 md5 密码身份验证,如果启用了 db_user_namespace,则任何一行包含 md5 作为身份验证方法的 pg_hba.conf 文件都将被拒绝。passwordscram-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=#

分类

身份验证GUC 配置项已过时用户和角色

反馈

提交任何关于“db_user_namespace”的评论、建议或更正 此处