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

如何在postgresql中从命令行更改角色?,postgresql,ubuntu,sh,Postgresql,Ubuntu,Sh,我试图构建一个安装脚本来自动化开发环境的创建,但是我在尝试管道或使用psql的-c修饰符时遇到了问题 我试过: sudo su postgres psql -c "ALTER ROLE postgres WITH password 'pass'" 及 两者都表示“未找到ALTER:command” 我也尝试过管道,但我无法将其与su正确结合 我试过类似的东西 sudo su postgres echo "ALTER ROLE postgres WITH password 'pass'" | p

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

我试过:

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

两者都表示“未找到ALTER:command”

我也尝试过管道,但我无法将其与su正确结合

我试过类似的东西

sudo su postgres echo "ALTER ROLE postgres WITH password 'pass'" | psql 
但postgres不能执行“echo”

以及:

这根本不起作用

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


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

问题在于
su
缺少
-c
-command
来指示行的其余部分是命令

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

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

如果您和我一样,请确保您不是从以下位置运行此操作:

bash-4.2$

但是:


postgres=#

为什么要使用
sudo
su
?你不能直接启动psql-U postgres吗?太好了。这就是路
echo "ALTER ROLE postgres WITH password 'pass'" | sudo su psql
sudo -u postgres psql -c "ALTER ROLE postgres WITH password 'pass'"