使用角色运行 psql

使用角色运行 psql

当使用 psql 时,我总是必须set role ...先发出问题。

在接受交互式命令之前可以自动执行吗?

例如:

psql -h HOST -U USER -c "set role 'ROLE';" -f -

这几乎达到了我想要的效果,除了它直接读取输入(没有 readline)。

我无法使用,-U ROLE因为该角色不允许登录。

答案1

除非传递 -X 选项,否则 psql 在连接到数据库之后但在接受正常命令之前,会尝试从系统范围的启动文件 (psqlrc) 以及用户的个人启动文件 (~/.psqlrc) 读取并执行命令。

和:

ENVIRONMENT PSQLRC 用户 .psqlrc 文件的备用位置。执行波形符 (~) 扩展。

所以你可以创建一个 set-role.sql 文件:

set role 'ROLE';

然后运行

PSQLRC=set-role.sql psql -h HOST -U USER

psql 将执行 set 命令,然后显示提示(带有自动完成功能)。

相关内容