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。 |
|
|
|
|
|