我的目标是能够在不必提示输入密码的情况下触发命令。有没有办法从Windows命令行实现这一点?在Linux中,我觉得我可以将密码发送到标准或其他东西,但我不确定我是否可以为Windows执行此操作。
谢谢!
答案 0 :(得分:21)
有两种方法:
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。
创建一个本地或域用户帐户,并使用相同的名称登录PostgreSQL。
在pg_ident.conf
中,创建一个映射:
# MAPNAME SYSTEM-USERNAME PG-USERNAME
SSPI username@AUTHORITY loginname
用Windows用户名(这是域帐户的sAMAccountName
属性)替换用户名,并用计算机名或短域名替换 AUTHORITY 。如果不确定用于 AUTHORITY 的内容,请检查PostgreSQL日志文件。对于本地帐户,这将是计算机名称;对于域帐户,可能是短域名。最后,将 loginname 替换为PostgreSQL登录名(为避免混淆,我建议对 username 和 loginname 使用相同的名称)。 / p>
在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
如果是域帐户,请为其设置SPN;例如:
setspn -S POSTGRES/serverfqdn username
现在您可以使用指定的用户名登录Windows并运行psql.exe
等,而无需输入密码。