回答

收藏

Postgres不允许localhost但可与127.0.0.1一起使用

技术问答 技术问答 266 人阅读 | 0 人回复 | 2023-09-14

如果我说Postgres不接受连接,-h localhost但如果我说它能工作的话-h 127.0.0.1
% u: Y. r/ l# w  Z[root@5d9ca0effd7f opensips]# psql -U postgres -h localhost -WPassword for user postgres:psql: FATAL:  Ident authentication failed for user "postgres"[root@5d9ca0effd7f opensips]# psql -U postgres -h 127.0.0.1 -WPassword for user postgres:psql (8.4.20)Type "help" for help.postgres=#我的 /var/lib/pgsql/data/pg_hba.conf. g. k; r9 g2 W& h! @4 B
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD# "local" is for Unix domain socket connections onlylocal   all         all                              trustlocal   all         all                              ident# IPv4 local connections:host    all         all      .0.0.1/32         trusthost    all         all      .0.0.1/32         ident# IPv6 local connections:host    all         all    ident如果我添加以下行动,则添加以下行动Postgres服务failed将启动:
8 ^! y; G% l) G( J2 I2 x0 _1 dhost    all         all        localhost             identhost    all         all        localhost             trust那里怎么了?$ W5 K. @0 _6 j% o" Q% R4 b
更新我的/etc/hosts档案:0 n3 p% U, I) V6 b( J
[root@5d9ca0effd7f opensips]# cat /etc/hosts172.17.0.2      5d9ca0effd7f127.0.0.      localhost::1     localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters               
) H2 S# m* u5 |* m    解决方案:                                                                ' F" ?$ d+ e0 w' p
                                                                在pg_hba.conf中,第 一个匹配1 V) U0 a$ n+ q
计数。每个文档:
( f' D% t$ U& Q具有匹配的连接类型、客户端地址、要求的数据库和用户名的第一个记录用于身份验证。没有失败或备份:如果选择记录并验证失败,则不考虑后续记录。如果没有记录匹配,则拒绝访问。
& c  ~; [- E7 D, M2 u  i请注意 相反的顺序    :# \: ?0 G# Q# u. [2 ?
host    all         all      .0.0.1/32         trusthost    all         all      .0.0.1/32         ident但:6 J6 x5 b7 L' g5 T" M  `
host    all         all        localhost             identhost    all         all        localhost             trust保存更改后,请记住) N8 g" i0 h& q. e0 P& y
重新加载pg_hba.conf。手册:: Z  X! w4 D2 h! E4 z$ A* _
该pg_hba.conf当主服务器启动时,文件被读取并处理SIGHUP信号。如果您在活动系统上编辑文件,您需要向邮局局长发送信号(使用pg_ctlreload,调用SQL函数pg_reload_conf()或使用kill -HUP),重读文件。; I: A4 y. k$ k- I, D' W; c* P5 M
如果你真的像你写的那样添加这些行,根本不会有效果。但是,如果你 更换    管线,则存在。( C# s1 d+ B" J4 T  i
在第一种情况下,你会得到它trust这是一种开放的身份验证方法。每个文档:! u" C, G6 e" F) s# o# I; {
PostgreSQL任何能够连接到服务器的人都有权使用他们指定的数据库用户名(甚至超级用户名)访问数据库。6 c+ J% `8 ^7 j9 a
但在第二种情况下,你会得到它ident必须正确设置身份验证方法才能起作用。
7 l1 S, ^. Z2 c+ f, m9 t* G: }另外,正如Cas稍后指出的那样,它localhost涵盖了IPv4和IPv6,而127.0.0.1/32仅适用于IPv4。如果使用IPv6.这是一个重要的区别。
$ J3 {$ l) u* ]如果你实际上使用过时的8.4版,请转到8.4旧手册。你知道8.2014年停产,不再支持吗?考虑升级到当前版本。0 I& ]! }9 ^$ I$ J% x8 @
在Postgres 9.在1或更高的版本中,你也宁愿使用 peer    不是ident。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则