我的目标是能够在不提示输入密码的情况下发出命令。有没有办法从windows命令行实现这一点?在Linux中我觉得我可以将密码发送到standard in或其他地方,但我不确定是否可以在windows中这样做。谢谢!
toiithl61#
有两种方法:
set PGPASSWORD=yoursecretpassword
%APPDATA%\postgresql\pgpass.conf
在密码文件(我的位置是C:\Users\Grzesiek\AppData\Roaming\postgresql\pgpass.conf)中使用以doc格式指定的。例如,要将数据库postgres作为本地5432服务器上的角色postgres连接,请添加:
localhost:5432:postgres:postgres:12345
I checked this and it works well (for me), but don't use 127.0.0.1).
00jrzges2#
另一个方便的选项(特别是如果您的PG服务器运行在您自己的客户端机器上,并且这不会给您带来任何安全问题)是允许在服务器中不使用密码登录(“信任”身份验证模式)。例如,pg_hba.conf中的这一行(在DATA目录中,典型位置:C:\Program Files\PostgreSQL\9.0\data\)赠款您从本地计算机进行无需密码的访问。
pg_hba.conf
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]
ssm49v7z3#
我知道这是一个老问题,但对于任何人看起来像我是,这是很难找到一个解决方案的windows。坚持在一个.bat文件,它会工作(至少对我来说它做到了)。更改director到postres目录,设置环境变量PGPASSWORD执行复制命令到csv文件,然后清除环境变量,然后回到根目录。
PGPASSWORD
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:\
trnvg8h34#
我意识到这个问题现在有点老了,但我相信有一个更好的方法可以在Windows上安全、无密码地登录PostgreSQL-SSPI。1.创建一个本地或域用户帐户,并使用相同的名称登录PostgreSQL。1.在pg_ident.conf中,创建一个Map:
pg_ident.conf
# MAPNAME SYSTEM-USERNAME PG-USERNAME SSPI username@AUTHORITY loginname
将 * username * 替换为Windows用户名(这是域帐户的sAMAccountName属性),并将 * AUTHORITY * 替换为计算机名或短域名。如果您不确定 * AUTHORITY * 的用法,请检查PostgreSQL日志文件。对于本地帐户,这将是计算机名;对于域帐户,它可能是短域名。最后,用PostgreSQL登录名替换 * loginname *(为了减少混淆,我建议使用相同的名称 * username * 和 * loginname *)。1.在pg_hba.conf中,允许登录;例如:
sAMAccountName
# TYPE DATABASE USER ADDRESS METHOD host all loginname 127.0.0.1/32 sspi map=SSPI host all loginname ::1/128 sspi map=SSPI
1.如果是域帐户,则为其设置SPN;例如:
setspn -S POSTGRES/serverfqdn username
现在您可以使用指定的用户名登录Windows并运行psql.exe等,而无需密码。
psql.exe
dtcbnfnu5#
步骤:第一环境变量PG密码C:\Windows\system32〉设置PGPASSWORD =关闭之前psql-d基本数据-U常用准备,
omvjsjqw6#
我得到了它的工作在Postgres 15与:
psql -U postgres -h 127.0.0.1 -p 54322 -f some_file password=postgres
J型
gzszwxb47#
我发现了另一个在this link上有效的解决方案,它基本上是在命令的开头设置PGPASSWORD,如下所示:
PGPASSWORD=PASSWORD psql YOUR_CODE
7条答案
按热度按时间toiithl61#
有两种方法:
set PGPASSWORD=yoursecretpassword
%APPDATA%\postgresql\pgpass.conf
在密码文件(我的位置是C:\Users\Grzesiek\AppData\Roaming\postgresql\pgpass.conf)中使用以doc格式指定的。例如,要将数据库postgres作为本地5432服务器上的角色postgres连接,请添加:
I checked this and it works well (for me), but don't use 127.0.0.1).
00jrzges2#
另一个方便的选项(特别是如果您的PG服务器运行在您自己的客户端机器上,并且这不会给您带来任何安全问题)是允许在服务器中不使用密码登录(“信任”身份验证模式)。
例如,
pg_hba.conf
中的这一行(在DATA目录中,典型位置:C:\Program Files\PostgreSQL\9.0\data\
)赠款您从本地计算机进行无需密码的访问。然后,连接
ssm49v7z3#
我知道这是一个老问题,但对于任何人看起来像我是,这是很难找到一个解决方案的windows。坚持在一个.bat文件,它会工作(至少对我来说它做到了)。更改director到postres目录,设置环境变量
PGPASSWORD
执行复制命令到csv文件,然后清除环境变量,然后回到根目录。trnvg8h34#
我意识到这个问题现在有点老了,但我相信有一个更好的方法可以在Windows上安全、无密码地登录PostgreSQL-SSPI。
1.创建一个本地或域用户帐户,并使用相同的名称登录PostgreSQL。
1.在
pg_ident.conf
中,创建一个Map:将 * username * 替换为Windows用户名(这是域帐户的
sAMAccountName
属性),并将 * AUTHORITY * 替换为计算机名或短域名。如果您不确定 * AUTHORITY * 的用法,请检查PostgreSQL日志文件。对于本地帐户,这将是计算机名;对于域帐户,它可能是短域名。最后,用PostgreSQL登录名替换 * loginname *(为了减少混淆,我建议使用相同的名称 * username * 和 * loginname *)。1.在
pg_hba.conf
中,允许登录;例如:1.如果是域帐户,则为其设置SPN;例如:
现在您可以使用指定的用户名登录Windows并运行
psql.exe
等,而无需密码。dtcbnfnu5#
步骤:
第一环境变量PG密码
C:\Windows\system32〉设置PGPASSWORD =关闭
之前
psql-d基本数据-U常用
准备,
omvjsjqw6#
我得到了它的工作在Postgres 15与:
J型
gzszwxb47#
我发现了另一个在this link上有效的解决方案,它基本上是在命令的开头设置
PGPASSWORD
,如下所示: