【问题标题】:Connect with psql from remote machine to remote postgres database with saved password使用 psql 从远程机器连接到保存密码的远程 postgres 数据库
【发布时间】:2015-10-28 22:38:28
【问题描述】:

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

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

我尝试了以下方法:

  1. 运行

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

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

  2. 根据another SO question,我创建了一个文件~/.pgpass,格式如下:hostname:port:database:username:password

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

    psql: fe_sendauth: 未提供密码。

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

有什么想法吗?

【问题讨论】:

  • 你的远程机器的名字和你的用户名有什么关系?顺便说一句,您没有在第二次 psql 调用中指定端口,但我怀疑这在这种情况下是否重要。
  • 好吧,根据这个 [serverfault.com/questions/526170/…,它可能会有所作为。我也尝试指定端口,但正如你所说,这不是问题。
  • 这个问题是关于使用sudo调用psql。你是用sudo打电话给psql吗?
  • 不,为此道歉。我不能使用 sudo,因为它是一台远程机器。我想创建一个 bash 脚本,它接受两个参数(输入/输出文件)并使用 psql 自动运行查询。
  • 我设法在这个 SO 问题中找到了我想要的解决方案 [stackoverflow.com/questions/6523019/…,我在发布之前做了足够的搜索,但我想我需要重新表述我的问题。解决办法是写PGPASSWORD=password psql -h hostname -U username -d database -f inputfile -o outputfile

标签: postgresql unix psql


【解决方案1】:

这工作正常,但我没有找到添加参数的方法 输入/输出文件

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

psql < input.sql
psql -f input.sql

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

psql -f input.sql > output.txt

【讨论】:

  • 谢谢。这在使用 psql 字符串模式时不起作用。解决方案是在 psql 之前添加 PGPASSWORD=password ,然后按你写的做。
  • 为什么不呢? psql "host=... dbname=... user=... port=... password=..." &lt; input.sql &gt; output.sql 工作正常。
  • 这个没试过,我试过用-f -o参数还是不行,谢谢
猜你喜欢
  • 2013-12-24
  • 2017-08-20
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 2011-07-18
  • 2011-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多