Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 使用保存的密码将psql从远程计算机连接到远程postgres数据库_Postgresql_Unix_Psql - Fatal编程技术网

Postgresql 使用保存的密码将psql从远程计算机连接到远程postgres数据库

Postgresql 使用保存的密码将psql从远程计算机连接到远程postgres数据库,postgresql,unix,psql,Postgresql,Unix,Psql,我在一台远程Unix机器上工作,在那里我通过SSH从本地机器连接。另一台主机上有一个Postgres数据库,我需要使用psql从远程计算机连接该数据库 我希望能够从输入文件运行查询,并将结果保存到输出文件,但是我没有成功地自动设置密码,这超出了每次运行查询时都要执行的需要 我尝试了以下方法: 跑 psql "user=username password=password host=hostname port=port dbname=database"` 使用我的用户名,密码,主机名,端口和数据

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

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

我尝试了以下方法:

  • 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
    文件时,这也可能会产生问题。还有别的办法吗

  • 有什么想法吗

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

    您可以将输入文件重定向到psql,或在
    -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