我正在尝试使用远程服务器上的jenkis执行postgres脚本。以下是shell脚本的内容。我通过SSH插件使用发布。
sudo -u postgres psql
使用密码创建用户声纳'声纳';
\杜
使用OWNER声纳编码创建数据库声纳' UTF8';
授予数据库声纳对声纳的所有特权;
\升
\ q
1)我可以看到内容在终端中打印但未执行。
解决方案我尝试过: 我创建了像
这样的脚本sudo -h myip -u postgres bash -c" psql -c \" CREATE USER sonar WITH PASSWORD' sonar'; \"" sudo -h myip -u postgres bash -c" psql -c \" CREATE DATABASE sonar WITH OWNER声纳编码' UTF8'; \""
sudo -h myip -u postgres bash -c" psql -c \"授予数据库声纳声纳对声纳的所有特权; \""
此脚本工作正常,但我必须多次连接远程服务器。我希望脚本连接一次并执行所有psql查询。
2)我也在寻找首先执行的dev和staging环境然后再生产。我们可以用这种方式管理插件吗?
答案 0 :(得分:1)
你可以创建包含所有查询的文件,比如my_queries.sql,然后像这样运行它:
sudo -h myip -u postgres bash -f my_queries.sql
my_queries.sql内容:
CREATE USER sonar WITH PASSWORD 'sonar';
CREATE DATABASE sonar WITH OWNER sonar encoding 'UTF8';
GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;