我的PostgreSQL存在问题 - psql.exe
忽略了我写的任何密码。
到目前为止我做了什么:
我运行一个简单的(Powershell)脚本来启动Postgre:
Start-Process -FilePath "C:\Program Files\PostgreSQL\pg95\bin\pg_ctl.exe" `
'start -D "C:\Program Files\PostgreSQL\data\pg95"''
运行后,我现在可以使用以下内容访问数据库:
& "C:\Program Files\PostgreSQL\pg95\bin\psql.exe" `
--dbname=$databaseName --host=$dbHost --username=$userName -c $sqlString
但最不幸的是终端没有提示我输入密码!
这很奇怪,因为psql.exe --help
给出了这一行:
..
-W, --password: force password prompt (should happen automatically)
但事实并非如此。
当我尝试应用-W
时,它会提示我,但忽略我写的内容,让我访问数据库。
所以解决方案可能是%appdata%\Postgresql\pgpass.conf
设置密码,但它是空的。
另一种解决方案是设置环境变量PGPASSWORD
,但我无法在任何地方看到它。我在Powershell中尝试Get-ChildItem Env:
,在cmd中尝试set
,但都没有设置。
欢迎任何建议。
答案 0 :(得分:2)
我见过的最短但最有帮助的答案,@ abelisto。
我pg_hba.conf
位于c:\Program Files\PostgreSQL\data\pg95\
下面说:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local & remote connections:
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 trust
From Abelisto's link trust
定义为:
无条件地允许连接。此方法允许任何可以连接到PostgreSQL数据库服务器的人以他们希望的任何PostgreSQL用户身份登录,而无需密码或任何其他身份验证。
将它们切换为md5
会产生更好的结果:
要求客户端提供双MD5哈希密码以进行身份验证。