我正在编写系统设置脚本并且已经安装了 postgres。这是一个测试脚本(以 root 身份运行),用于尝试报告 postgres 中的工作目录。调用 pwd
作为 postgres 给出 /var/lib/postgresql
。但是测试..
#!/bin/bash
su - postgres
pwd > /home/me/postgres_report
exit
.. 失败(显然)并报告原始工作目录。之后 bash shell 卡在 postgres 中,表明命令没有按正确的顺序调用。我了解这里的 bash 环境问题。我不知道如何做我需要做的事情,这是一个自动化的 postgres 过程,我可以很容易地以交互方式进行(即进入 postgres,执行命令,然后退出)。有什么指点吗?
最佳答案
使用 sudo
.
使用其中之一:
将一行命令传递给
psql
sudo -u postgres psql -c "SELECT ..."`
此处文档:
sudo -u postgres psql <<"__END__" SELECT ...; SELECT ...; __END__
(如果您希望能够在 shell 变量中替换,请省略
"
,例如<<__END__
,反斜杠转义$
表示您不想成为变量)将文件传递给
psql
sudo -u postgres psql -f /path/to/file
sudo -u postgres
当然只有当你需要成为 postgres
时才需要系统用户以 postgres
身份运行任务数据库用户通过 peer
验证。否则你可以使用 psql -U username
, 一个 .pgpass
文件等
关于linux - 脚本自动化 postgres 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32406484/