关于postgresql:使用保存的密码将psql从远程机器连接到远程postgres数据库

Connect with psql from remote machine to remote postgres database with saved password

我正在远程Unix机器上工作,我通过SSH连接本地机器。在另一台主机上有一个Postgres数据库,我需要使用psql从我的远程机器连接。

我希望能够从输入文件运行查询并将结果保存到输出文件,但是我没有设法自动设置密码,超过了每次运行查询时都需要这样做。

我尝试了以下方法:

  • 1
    psql"user=username password=password host=hostname port=port dbname=database"`

    使用我的usernamepasswordhostnameportdatabase值。
    这工作正常但我没有找到为输入/输出文件添加参数的方法(不需要通过Postgres交互式环境)。

  • 根据另一个SO问题,我创建了一个文件~/.pgpass,格式如下:hostname:port:database:username:password

    然后chmod 0600 ~/.pgpass但是在连接时:psql -h hostname -U username -d database -w psql忽略了这个(我收到了以下失败的身份验证消息。)

    psql: fe_sendauth: no password supplied.

    请注意,我的远程计算机的名称与我的用户名不同,因此在创建.pgpass文件时也可能会产生问题。还有其他办法吗?

  • 有任何想法吗?


    This worked OK but I did not find a way to add arguments for
    input/output files

    您可以将输入文件重定向到psql,也可以在-f选项中指定它:

    1
    2
    psql < INPUT.sql
    psql -f INPUT.sql

    至于输出文件,只需将psql的输出重定向到它:

    1
    psql -f INPUT.sql > output.txt