如何在postgresql中从命令行改变角色?

时间:2015-02-18 13:44:56

标签: postgresql ubuntu sh

我正在尝试构建一个设置脚本来自动创建开发环境,但是我在尝试管道或使用psc的-c修饰符时遇到了麻烦。

我试过了:

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

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

两者都说" ALTER:命令未找到"

我也尝试过管道,但是我无法正确地将它与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文件中执行这个简单的命令?

第二个,相关性较小:如何在与管道链接的命令中使用不同的用户?

2 个答案:

答案 0 :(得分:8)

-c缺少--commandsu表示该行的其余部分是命令,这是错误的。

但无论如何都不需要su,因为已经有sudo。这样做:

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

答案 1 :(得分:0)

如果您像我一样,请确保您不在以下位置运行

bash-4.2$

但是:

postgres=#