类型: bool
默认: off
上下文: sighup
重新开始: false

这个参数启用针对每个数据库的用户名。这个参数默认是关掉的。这个参数只能在postgresql.conf文件中或者服务器命令行上设置。

如果这个参数为打开,应该把用户创建成username@dbname的形式。当一个连接客户端传来username时,@和数据库名会被追加到用户名并且服务器会查找这个与数据库相关的用户名。注意在SQL环境中用含有@的名称创建用户时,需要把用户名放在引号内。

在这个参数被启用时,仍然可以创建平常的全局用户。而在客户端中指定这种用户时只需要简单地追加@,例如joe@。在服务器查找该用户名之前,@会被剥离掉。

db_user_namespace会导致客户端和服务器的用户名表达形式不同。认证检查总是会以服务器的用户名表达形式来完成,因此认证方法必须针对服务器用户名而不是客户端用户名来配置。由于md5方法在客户端和服务器两端都使用用户名作为salt,md5不能与db_user_namespace同时使用。

这种特性的目的是在找到完整的解决方案之前提供一种临时的措施。在找到完整解决方案时,这个选项将被去除。

建议 [EN]

This setting is a hack to work around the lack of per-database users in PostgreSQL. Unless you desperately need it, avoid this setting as it will eventually be replaced by something more maintainable.

条评论