运行 来自另一台服务器的 postgres 查询,在 bash

Run postgres query from another server, in bash

我有一个 Ubuntu 处理文档的服务器和另一个具有数据库 (postgresql 9.3) 的服务器。

我 运行 psql -? 了解如何连接到另一个数据库,最终命令将是:

psql -U postgres -W -h 1.2.3.4 -d testdb -p 5432

有效,但我必须在命令发出后输入密码。

我试图在 bash 脚本中修改此命令:

#!/bin/bash
psql -U postgres -W mypassword -h 1.2.3.4 -d testdb -p 5432 << EOF
select * from mytable;
\q
EOF

不用说这不是正确的命令。 另外,密码没有被识别为密码,报错:

psql: warning: extra command-line argument "mypassword" ignored
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

在另一台服务器上,脚本在本地数据库上运行,我的工作脚本是:

su - postgres -c "psql myDatabase" << EOF
select * from "myOtherTable";
\q
EOF

问题很简单,如何为 bash 编写正确的命令,以使用 user/password 连接到另一个数据库并发出命令?

A link 我试过了,但是好像没有设置密码: run psql query in bash

谢谢!

尝试

PGPASSWORD=yourpass psql -U postgres -W -h 1.2.3.4 -d testdb -p 5432

参见:https://www.postgresql.org/docs/9.3/static/libpq-envars.html

或 ~/.pgpass 文件 https://www.postgresql.org/docs/9.3/static/libpq-pgpass.html