Linux 用于postgres安装和从远程客户端恢复数据库的Shell脚本

Linux 用于postgres安装和从远程客户端恢复数据库的Shell脚本,linux,postgresql,ubuntu,Linux,Postgresql,Ubuntu,我试图在Ubuntu12.04中安装Postgres9.3(客户端和服务器都有相同的操作系统),从远程客户端(使用jcraft从一个系统到另一个系统) 当我将下面的脚本运行到主系统时(使用主系统的终端,在那里我安装了postgresql 9.3),它执行得很好。架构的安装和创建以及数据库的恢复已成功完成 但是,当我尝试从远程客户端(使用jcraft)运行相同的脚本时,我首先将脚本上传到安装postgres的系统,然后运行脚本,显示一些身份验证错误 (致命:用户“postgres”的密码验证失败)

我试图在Ubuntu12.04中安装Postgres9.3(客户端和服务器都有相同的操作系统),从远程客户端(使用jcraft从一个系统到另一个系统)

当我将下面的脚本运行到主系统时(使用主系统的终端,在那里我安装了postgresql 9.3),它执行得很好。架构的安装和创建以及数据库的恢复已成功完成

但是,当我尝试从远程客户端(使用jcraft)运行相同的脚本时,我首先将脚本上传到安装postgres的系统,然后运行脚本,显示一些身份验证错误

(致命:用户“postgres”的密码验证失败)

有人知道我做错了什么吗

这是我的剧本
PASS=dici
gpg--keyserver keyserver.ubuntu.com--recv key E084DAB9
gpg-a——导出E084DAB9 | sudo apt密钥添加-
回声“黛布http://apt.postgresql.org/pub/repos/apt/ 精确pgdg主“>。/pgdg.list
echo$PASS | sudo-S mv./pgdg.list/etc/apt/sources.list.d/
echo$PASS | sudo-S apt获取更新
echo$PASS | sudo-S apt get-y-q安装python软件属性软件属性通用
echo$PASS | sudo-S apt get-y--强制是安装postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3
echo“localhost:5432::::postgres:postgres”>>.pgpass
echo$PASS | sudo-S chmod 600.pgpass
echo$PASS | sudo-S su-postgres/etc/postgresql/9.3/main/pg|u hba.conf
echo$PASS | sudo-S chmod 777/etc/postgresql/9.3/main/postgresql.conf
echo$PASS | sudo-S echo“listen_addresses='*'”>>/etc/postgresql/9.3/main/postgresql.conf
echo$PASS | sudo-S chmod 640/etc/postgresql/9.3/main/pg|u hba.conf
echo$PASS | sudo-S chmod 644/etc/postgresql/9.3/main/postgresql.conf
echo$PASS | sudo-S服务postgresql重启
echo“--------------还原数据数据库-----------------------------------------”
/usr/bin/pg_restore--主机localhost--端口5432--用户名“postgres”--数据库名“postgres”--角色“postgres”--无密码--详细的“ayata.backup”
--------------------------------------------

根据我删除的答案,我认为你应该使用
.pgpass
文件。你说错误仍然存在,但对我来说,我认为该文件位于错误用户的homedir中或无效。没有更多信息,我真的帮不上忙,也没有时间进行长时间的来回问答,所以我将此留给其他人。根据dvice在删除的答案中,也使用
sudo-u postgres
not
sudo-su-postgres
。您是否有一个名为“peer”的异常主机?如果没有,pg_hba文件中的那一行应该做什么?我解决了问题……实际上我需要注释行“host all 127.0.01 md5”“host all::1/128 md5”然后附加所有主机0.0.0.0/0信任我解决了问题…..实际上我需要注释“所有主机127.0.01 md5”“所有主机::1/128 md5”然后附加主机所有0.0.0.0/0信任主机所有::1/128信任,然后重新启动服务器。@Craig Ringer….pgpass应该在那里。感谢您的帮助,我刚刚完成了这项工作……昨天前两行没有取消注释,现在我可以配置远程,从UI安装postgresql并还原数据库工作正常…感谢你们的帮助。啊,不,你们不需要添加
托管所有0.0.0.0/0信任
——这意味着“完全禁用我的数据库在任何地方的所有连接的所有安全性”。
PASS=dici

gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9
gpg -a --export E084DAB9 | sudo apt-key add -

echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > ./pgdg.list

echo $PASS | sudo -S mv ./pgdg.list /etc/apt/sources.list.d/

echo $PASS | sudo -S apt-get update

echo $PASS |sudo -S apt-get -y -q install python-software-properties software-properties-common
echo $PASS |sudo -S apt-get -y --force-yes install postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3

echo "localhost:5432:*:postgres:postgres" >> .pgpass
echo $PASS | sudo -S chmod 600 .pgpass


echo $PASS|sudo -S su - postgres<<-'EOF'
 psql template1
 alter user postgres with password 'postgres';
 CREATE SCHEMA ayata AUTHORIZATION postgres;
 \q
 logout
EOF



echo $PASS | sudo -S chmod 777 /etc/postgresql/9.3/main/pg_hba.conf 

echo $PASS| sudo -S echo "host all  all  peer  md5" >> /etc/postgresql/9.3/main/pg_hba.conf

echo $PASS | sudo -S chmod 777 /etc/postgresql/9.3/main/postgresql.conf

echo $PASS| sudo -S echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/postgresql.conf


echo $PASS | sudo -S chmod 640 /etc/postgresql/9.3/main/pg_hba.conf

echo $PASS | sudo -S chmod 644 /etc/postgresql/9.3/main/postgresql.conf

 echo $PASS| sudo -S service postgresql restart

echo "------------------ restore datatbase ----------------------------------------"
/usr/bin/pg_restore --host localhost --port 5432 --username "postgres" --dbname "postgres" --role "postgres" --no-password  --verbose "ayata.backup"
--------------------------------------------