Postgresql 使用保存的密码将psql从远程计算机连接到远程postgres数据库
我在一台远程Unix机器上工作,在那里我通过SSH从本地机器连接。另一台主机上有一个Postgres数据库,我需要使用psql从远程计算机连接该数据库 我希望能够从输入文件运行查询,并将结果保存到输出文件,但是我没有成功地自动设置密码,这超出了每次运行查询时都要执行的需要 我尝试了以下方法:Postgresql 使用保存的密码将psql从远程计算机连接到远程postgres数据库,postgresql,unix,psql,Postgresql,Unix,Psql,我在一台远程Unix机器上工作,在那里我通过SSH从本地机器连接。另一台主机上有一个Postgres数据库,我需要使用psql从远程计算机连接该数据库 我希望能够从输入文件运行查询,并将结果保存到输出文件,但是我没有成功地自动设置密码,这超出了每次运行查询时都要执行的需要 我尝试了以下方法: 跑 psql "user=username password=password host=hostname port=port dbname=database"` 使用我的用户名,密码,主机名,端口和数据
psql "user=username password=password host=hostname port=port dbname=database"`
使用我的用户名
,密码
,主机名
,端口
和数据库
值。
这工作正常,但我没有找到为输入/输出文件添加参数的方法(不需要经过Postgres交互环境)~/.pgpass
,格式如下:主机名:端口:数据库:用户名:密码
然后,chmod 0600~/.pgpass
但是当作为连接时:psql-h hostname-U username-d database-w
psql忽略了这一点(我收到了以下失败的身份验证消息。)
psql:fe_sendauth:未提供密码
请注意,我的远程计算机的名称与我的用户名不同,因此在创建.pgpass
文件时,这也可能会产生问题。还有别的办法吗-f
选项中指定它:
psql < input.sql
psql -f input.sql
远程计算机的名称与您的用户名有什么关系?顺便说一下,您在第二次
psql
调用中没有指定端口,但我怀疑这在上下文中是否重要[,这可能会有所不同。我也尝试指定端口,但正如您所说,这不是问题。这个问题是关于使用sudo
调用psql
。您是否使用sudo
调用psql
?不,对此表示歉意。我无法使用sudo,因为它是一台远程计算机。我想创建一个可以调用它的bash脚本kes两个参数(输入/输出文件)并使用psql自动运行查询。我设法找到了这个问题的解决方案[,在发布之前我确实搜索了很多,但我想我需要重新表述我的问题。解决方案是在psql之前写入PGPASSWORD=password-psql-h hostname-U username-d database-f inputfile-o outputfile
谢谢。这在使用psql字符串模式时不起作用。解决方案是在psql之前添加PGPASSWORD=password,然后按照您的方式写入。Wh不是吗?psql“host=…dbname=…user=…port=…password=…”output.sql
工作正常。我没有尝试此操作,我尝试使用-f-o参数,但不起作用,谢谢
psql -f input.sql > output.txt