PostgreSQL';s psql.exe不';无法验证密码
我的PostgreSQL有一个问题,PostgreSQL';s psql.exe不';无法验证密码,postgresql,powershell,Postgresql,Powershell,我的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:
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
,但都没有设置
欢迎提出任何建议。我所见过的最简短但最有用的答案,@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
信任
定义为:
无条件允许连接。此方法允许任何可以连接到PostgreSQL数据库服务器的人以任何PostgreSQL用户的身份登录,而无需密码或任何其他身份验证
将它们切换到md5
会得到更好的结果:
要求客户端提供双MD5哈希密码进行身份验证
“这是我见过的最短但最有用的答案,@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
信任
定义为:
无条件允许连接。此方法允许任何可以连接到PostgreSQL数据库服务器的人以任何PostgreSQL用户的身份登录,而无需密码或任何其他身份验证
将它们切换到md5
会得到更好的结果:
要求客户端提供双MD5哈希密码进行身份验证
了解更多你的困惑并不是没有道理的。人们觉得奇怪的是,你可以创建一个带有密码的用户
,而他们不需要使用密码登录,或者你可以创建一个没有密码的用户,
,然后系统会提示你输入密码(当你希望静默登录时)。当您意识到只有在pg_hba.conf
中使用password
或md5
auth方法时才使用密码时,这是有意义的,因此,如果需要密码,它控制密码是什么,而不是是否需要密码。但不是超级用户友好。你的困惑并不是没有道理的。人们觉得奇怪的是,你可以创建一个带有密码的用户,而他们不需要使用密码登录,或者你可以创建一个没有密码的用户,
,然后系统会提示你输入密码(当你希望静默登录时)。当您意识到只有在pg_hba.conf
中使用password
或md5
auth方法时才使用密码时,这是有意义的,因此,如果需要密码,它控制密码是什么,而不是是否需要密码。虽然不是超级用户友好。