如何从 postgresql 中的命令行更改角色?

How to alter role from command line in postgresql?

我正在尝试构建一个安装脚本来自动创建开发环境,但我在尝试通过管道传输或使用 psql 的 -c 修饰符时遇到了问题。

我试过:

sudo su postgres psql -c "ALTER ROLE postgres WITH password 'pass'"

sudo su postgres psql -c "ALTER ROLE postgres WITH password 'pass';"

两者都说 "ALTER: command not found"

我也尝试过 pipe,但我无法将它与 su 正确结合

例如:我试过

sudo su postgres echo "ALTER ROLE postgres WITH password 'pass'" | psql 

但是postgres无法执行"echo"

并且:

echo "ALTER ROLE postgres WITH password 'pass'" | sudo su psql

这是行不通的。

所以,我的第一个问题是:如何从 sh 文件执行这个简单的命令?

第二个不太相关:如何在用管道链接的命令中使用不同的用户?

错误在于 su 缺少 -c--command 以指示该行的其余部分是命令。

但是su反正也不需要了,因为已经有sudo了。改为这样做:

sudo -u postgres psql -c "ALTER ROLE postgres WITH password 'pass'"

如果你和我一样,请确保你不是 运行 这个来自:

bash-4.2$

但是:

postgres=#