从远程机器使用保存的密码连接到远程 Postgres 数据库的 psql。

8 浏览
0 Comments

从远程机器使用保存的密码连接到远程 Postgres 数据库的 psql。

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

我希望能够从输入文件运行查询并将结果保存到输出文件中,但我没有成功自动设置密码,超越了每次运行查询时需要进行密码验证的需要。

我尝试了以下方法:

  1. 使用我的用户名密码主机名端口号数据库值运行

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

    这个方法还可以,但我没有找到为输入/输出文件添加参数的方法(不需要通过Postgres交互环境)。

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

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

    psql:fe_sendauth:未提供密码。

    请注意,我的远程机器名称与我的用户名不同,因此在创建.pgpass文件时可能还会出现问题。还有其他方法可以做到吗?

有什么想法吗?

admin 更改状态以发布 2023年5月24日
0
0 Comments

这个方法可以用来执行操作,但我没有找到添加输入/输出文件参数的方法

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

psql < input.sql
psql -f input.sql

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

psql -f input.sql > output.txt

0