Postgresql Postgres用户角色是否可以配置默认数据库和/或默认模式(除了“开箱即用”的默认模式)?

Postgresql Postgres用户角色是否可以配置默认数据库和/或默认模式(除了“开箱即用”的默认模式)?,postgresql,Postgresql,根据dbnameconnection参数默认为用户名: dbname 数据库名称。默认值与用户名相同。 在某些上下文中,检查扩展格式的值; 有关这些方面的更多详细信息,请参见第31.1.1节 我的第一个问题是:如果没有与用户名对应的数据库,会发生什么情况?除了与用户名同名的数据库之外,是否有其他方法定义默认数据库?(如何实现这一目标?) 我的第二个问题是:一旦连接到数据库,是否可以为用户定义默认模式?(如何实现这一点?无法使用默认数据库设置用户,因为要连接到哪个数据库的决定是在服务器首次连接之前

根据
dbname
connection参数默认为用户名:

dbname

数据库名称。默认值与用户名相同。 在某些上下文中,检查扩展格式的值; 有关这些方面的更多详细信息,请参见第31.1.1节

我的第一个问题是:如果没有与用户名对应的数据库,会发生什么情况?除了与用户名同名的数据库之外,是否有其他方法定义默认数据库?(如何实现这一目标?)


我的第二个问题是:一旦连接到数据库,是否可以为用户定义默认模式?(如何实现这一点?

无法使用默认数据库设置用户,因为要连接到哪个数据库的决定是在服务器首次连接之前做出的客户端决定

它不是默认的PostgreSQL服务器,而是
libpq
和客户机工具,如
psql
。这些工具检查
PGDATABASE
环境变量,因此您可以设置该变量,但无法从服务器端控制行为

您可以设置模式搜索路径的默认值,如@a_horse_with_no_name notes,with

ALTER ROLE rolename SET search_path = ....

无法使用默认数据库设置用户,因为要连接到的数据库是在服务器首次连接之前决定的客户端数据库

它不是默认的PostgreSQL服务器,而是
libpq
和客户机工具,如
psql
。这些工具检查
PGDATABASE
环境变量,因此您可以设置该变量,但无法从服务器端控制行为

您可以设置模式搜索路径的默认值,如@a_horse_with_no_name notes,with

ALTER ROLE rolename SET search_path = ....

alter role set search\u path=…
alter role set search\u path=…@a\u horse\u,因为它是一个标识符列表。谢谢您的更正。@a_horse_,正确的名称是_no_,因为它是一个标识符列表。谢谢你的更正。