db_user_namespace

启用每个数据库的用户名称
此条目涉及一项已不再可用/维护的 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”的任何评论、建议或更正 在此处