Windows PSQL命令行:有没有办法允许无密码登录?

时间:2011-06-02 15:09:57

标签: windows postgresql

我的目标是能够在不必提示输入密码的情况下触发命令。有没有办法从Windows命令行实现这一点?在Linux中,我觉得我可以将密码发送到标准或其他东西,但我不确定我是否可以为Windows执行此操作。

谢谢!

6 个答案:

答案 0 :(得分:21)

有两种方法:

  • 设置环境变量PGPASSWORD,例如set PGPASSWORD=yoursecretpassword
  • 使用密码文件%APPDATA%\postgresql\pgpass.conf,如documentation
  • 中所述

在密码文件中(我的位置是C:\ Users \ Grzesiek \ AppData \ Roaming \ postgresql \ pgpass.conf)使用doc格式指定。例如,要将数据库postgres连接为本地5432服务器上的角色postgres,请添加:

localhost:5432:postgres:postgres:12345

我检查了这个并且效果很好(对我而言),但不要使用127.0.0.1。

答案 1 :(得分:12)

另一个方便的选项(特别是如果您的PG服务器在您自己的客户端计算机上运行,​​如果这不会给您带来任何安全问题)是允许在服务器中无密码登录(“信任”身份验证模式)。

例如,pg_hba.conf中的这一行(在您的DATA目录中,一个典型的位置:C:\Program Files\PostgreSQL\9.0\data\)授予您本地计算机无密码的访问权限。

host     all     all     127.0.0.1/32    trust

然后,连接

  psql.exe -h 127.0.0.1 -U postgres -w [YOUR_DB_NAME]

答案 2 :(得分:1)

I know it is an old question but for anyone looking like I was, it is hard to find a solution for windows. stick this in a .bat file and it will work (at least for me it did). change director to postres directory, set environment variable PHPASSWORD execute copy command to a csv file and then clear environment variable, then go back to root directory.

cd C:\Program Files\PostgreSQL\9.5\bin\

set PGPASSWORD=yourpassword


psql -d databasename -U yourusername -w -c "\COPY (select * from yourtable) TO 'c:/Users/yourdirectory/yourcsvfilename.csv' DELIMITER '|' CSV HEADER;"

set PGPASSWORD=

cd c:\

答案 3 :(得分:0)

步骤:

First Enviroment Var PGPASSWORD

C:\ Windows \ system32>设置PGPASSWORD = clave

psql -d basededatos -U usuario

就绪

答案 4 :(得分:0)

我在this link找到了另一个有用的解决方案。它基本上将PGPASSWORD设置在命令的开头,如下所示:

PGPASSWORD=PASSWORD psql YOUR_CODE

答案 5 :(得分:0)

我知道这个问题现在有点老了,但是我相信Windows上有一种更好的安全,无密码的PostgreSQL登录方式-SSPI

  1. 创建一个本地或域用户帐户,并使用相同的名称登录PostgreSQL。

  2. pg_ident.conf中,创建一个映射:

    # MAPNAME   SYSTEM-USERNAME      PG-USERNAME
    SSPI        username@AUTHORITY   loginname
    

    用Windows用户名(这是域帐户的sAMAccountName属性)替换用户名,并用计算机名或短域名替换 AUTHORITY 。如果不确定用于 AUTHORITY 的内容,请检查PostgreSQL日志文件。对于本地帐户,这将是计算机名称;对于域帐户,可能是短域名。最后,将 loginname 替换为PostgreSQL登录名(为避免混淆,我建议对 username loginname 使用相同的名称)。 / p>

  3. pg_hba.conf中,允许登录;例如:

    # TYPE   DATABASE   USER        ADDRESS        METHOD
    host     all        loginname   127.0.0.1/32   sspi map=SSPI
    host     all        loginname   ::1/128        sspi map=SSPI
    
  4. 如果是域帐户,请为其设置SPN;例如:

    setspn -S POSTGRES/serverfqdn username
    

现在您可以使用指定的用户名登录Windows并运行psql.exe等,而无需输入密码。