Postgresql 可以通过本地主机连接到postgres,无需密码,但不能通过127.0.0.1。为什么?
我已经安装了Kubuntu 14.10桌面和PostgreSQL 9.4数据库。 我已通过执行SQL更改了数据库中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,它会提示我输
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=#