Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL';s psql.exe不';无法验证密码_Postgresql_Powershell - Fatal编程技术网

PostgreSQL';s psql.exe不';无法验证密码

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:

我的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
,但都没有设置


欢迎提出任何建议。

我所见过的最简短但最有用的答案,@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方法时才使用密码时,这是有意义的,因此,如果需要密码,它控制密码是什么,而不是是否需要密码。虽然不是超级用户友好。