Windows PSQL command line: is there a way to allow for passwordless login?
我的目标是能够在不必提示输入密码的情况下触发命令。 有没有办法从Windows命令行实现这一点? 在Linux中,我觉得我可以将密码发送到标准或其他东西,但我不确定我是否可以为Windows执行此操作。
谢谢!
有两种方法:
-
设置环境变量PGPASSWORD,例如
set PGPASSWORD=yoursecretpassword -
使用密码文件
%APPDATA%\postgresql\pgpass.conf ,如文档中所述
在密码文件中(我的位置是C: Users Grzesiek AppData roaming postgresql pgpass.conf)使用doc格式指定。例如,要将数据库postgres连接为本地5432服务器上的角色postgres,请添加:
1 | localhost:5432:postgres:postgres:12345 |
我检查了这个并且效果很好(对我来说),但是不要使用127.0.0.1)。
另一个方便的选项(特别是如果您的PG服务器在您自己的客户端计算机上运行,??如果这不会给您带来任何安全问题)是允许在服务器中无密码登录("信任"身份验证模式)。
例如,
1 | host ALL ALL 127.0.0.1/32 trust |
然后,连接
1 | psql.exe -h 127.0.0.1 -U postgres -w [YOUR_DB_NAME] |
我知道这是一个老问题,但对于看起来像我的人来说,很难找到适合Windows的解决方案。把它粘在.bat文件中它会起作用(至少对我而言)。将director更改为postres目录,将环境变量
1 2 3 4 5 6 7 8 9 10 | 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:\ |
我意识到这个问题现在有点老了,但我相信在Windows上安全,无密码的PostgreSQL登录有更好的方法--SSPI。
使用相同的名称创建本地或域用户帐户和PostgreSQL登录。
在
1 2 | # MAPNAME SYSTEM-USERNAME PG-USERNAME SSPI username@AUTHORITY loginname |
将用户名替换为Windows用户名(这是域帐户的
在
1 2 3 | # 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;例如。:
1 | setspn -S POSTGRES/serverfqdn username |
现在,您可以使用指定的用户名登录Windows并运行
我在这个链接上找到了另一个有用的解决方案。它基本上将
1 | PGPASSWORD=PASSWORD psql YOUR_CODE |
脚步:
First Enviroment Var PGPASSWORD
C: Windows system32>设置PGPASSWORD = clave
之前
psql -d basededatos -U usuario
准备,