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

qf9go6mv  于 2022-12-29  发布在  PostgreSQL
关注(0)|答案(7)|浏览(494)

我的目标是能够在不提示输入密码的情况下发出命令。有没有办法从windows命令行实现这一点?在Linux中我觉得我可以将密码发送到standard in或其他地方,但我不确定是否可以在windows中这样做。
谢谢!

toiithl6

toiithl61#

有两种方法:

  • 设置环境变量PGPASSWORD,例如set PGPASSWORD=yoursecretpassword
  • 按照documentation中的说明使用密码文件%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).

00jrzges

00jrzges2#

另一个方便的选项(特别是如果您的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]
ssm49v7z

ssm49v7z3#

我知道这是一个老问题,但对于任何人看起来像我是,这是很难找到一个解决方案的windows。坚持在一个.bat文件,它会工作(至少对我来说它做到了)。更改director到postres目录,设置环境变量PGPASSWORD执行复制命令到csv文件,然后清除环境变量,然后回到根目录。

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:\
trnvg8h3

trnvg8h34#

我意识到这个问题现在有点老了,但我相信有一个更好的方法可以在Windows上安全、无密码地登录PostgreSQL-SSPI
1.创建一个本地或域用户帐户,并使用相同的名称登录PostgreSQL。
1.在pg_ident.conf中,创建一个Map:

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

将 * username * 替换为Windows用户名(这是域帐户的sAMAccountName属性),并将 * AUTHORITY * 替换为计算机名或短域名。如果您不确定 * AUTHORITY * 的用法,请检查PostgreSQL日志文件。对于本地帐户,这将是计算机名;对于域帐户,它可能是短域名。最后,用PostgreSQL登录名替换 * loginname *(为了减少混淆,我建议使用相同的名称 * username * 和 * loginname *)。
1.在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

1.如果是域帐户,则为其设置SPN;例如:

setspn -S POSTGRES/serverfqdn username

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

dtcbnfnu

dtcbnfnu5#

步骤:
第一环境变量PG密码
C:\Windows\system32〉设置PGPASSWORD =关闭
之前
psql-d基本数据-U常用
准备,

omvjsjqw

omvjsjqw6#

我得到了它的工作在Postgres 15与:

psql -U postgres -h 127.0.0.1 -p 54322 -f some_file password=postgres

J型

gzszwxb4

gzszwxb47#

我发现了另一个在this link上有效的解决方案,它基本上是在命令的开头设置PGPASSWORD,如下所示:

PGPASSWORD=PASSWORD psql YOUR_CODE

相关问题