db_user_namespace

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

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文件都将被拒绝。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"的任何评论、建议或更正 此处