【问题标题】:Run postgres query from another server, in bash在 bash 中从另一台服务器运行 postgres 查询
【发布时间】:2017-05-05 17:56:18
【问题描述】:

我有一个处理文档的 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 编写正确的命令,使用用户/密码连接到另一个数据库并发出命令?

我尝试了一个链接,但似乎没有设置密码: run psql query in bash

谢谢!

【问题讨论】:

    标签: bash psql


    【解决方案1】:

    试试

    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

    【讨论】:

    • 好链接!谢谢我检查他们,工作时会标记你的答案(:
    • 一开始它一直在询问密码,然后就停止了。测试服务器重新启动,脚本运行并运行!我尝试了 .pgpass 解决方案。在根文件夹中创建此文件,权限为 0600,脚本中的命令为psql -U postgres -h 1.2.3.4 -d dbname &lt;&lt; eof [...] \q eof
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2023-04-04
    相关资源
    最近更新 更多