Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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 可以通过本地主机连接到postgres,无需密码,但不能通过127.0.0.1。为什么?_Postgresql_Ubuntu - Fatal编程技术网

Postgresql 可以通过本地主机连接到postgres,无需密码,但不能通过127.0.0.1。为什么?

Postgresql 可以通过本地主机连接到postgres,无需密码,但不能通过127.0.0.1。为什么?,postgresql,ubuntu,Postgresql,Ubuntu,我已经安装了Kubuntu 14.10桌面和PostgreSQL 9.4数据库。 我已通过执行SQL更改了数据库中postgres用户的密码: ALTER USER postgres PASSWORD 'password'; 我可以通过psql-h localhost-U postgres-W连接到DB服务器,并给出密码,但我也可以通过psql-h localhost-U postgres连接而不需要密码 另一方面,如果我运行psql-h 127.0.0.1-U postgres,它会提示我输

我已经安装了Kubuntu 14.10桌面和PostgreSQL 9.4数据库。 我已通过执行SQL更改了数据库中
postgres
用户的密码:

ALTER USER postgres PASSWORD 'password';
我可以通过
psql-h localhost-U postgres-W
连接到DB服务器,并给出密码,但我也可以通过
psql-h localhost-U postgres
连接而不需要密码

另一方面,如果我运行
psql-h 127.0.0.1-U postgres
,它会提示我输入之前设置的密码

localhost
127.0.0.1
主机及其登录方法之间有什么区别?设置在哪里?我在
pg_hba.conf
文件中没有看到与
localhost
相关的条目。

您看到的行为可能是由密码文件引起的。在Unix系统上,密码文件通常命名为~/.pgpass,但是可以通过PGPASSFILE环境变量指定不同的文件名

我认为包含“localhost”行但不包含“127.0.0.1”行的密码文件将显示您看到的行为。我自己的~/.pgpass文件包含这一行

localhost:*:*:postgres:password
你有.pgpass文件吗?有。当我在谷歌上搜索时,我没有找到关于这个文件的任何信息。它实际上回答了我的问题。正如我所看到的,当我在那里输入连接详细信息时,pgadmin3创建了这个文件(我很好奇pgadmin在哪里存储密码…但没有查找它)。如果您将此作为正确答案发布,我将认为它是正确的。另一个区别是,
localhost
在某些系统上解析为
::1
,或者解析为其他IPv6等效地址,或者解析为多个地址。其中任何一项都意味着
127.0.0.1
pg_hba.conf
中不匹配。 $ psql -h localhost -U postgres psql (9.3.5) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. sandbox=# \q $ psql -h 127.0.0.1 -U postgres Password for user postgres: $ psql -h 127.0.0.1 -U postgres psql (9.3.5) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. sandbox=#