当前位置: 首页 > 面试题库 >

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

钱均
2023-03-14
问题内容

如果我说Postgres不接受连接,-h localhost但是如果我说它可以工作-h 127.0.0.1

[root@5d9ca0effd7f opensips]# psql -U postgres -h localhost -W
Password for user postgres:
psql: FATAL:  Ident authentication failed for user "postgres"
[root@5d9ca0effd7f opensips]# psql -U postgres -h 127.0.0.1 -W
Password for user postgres:
psql (8.4.20)
Type "help" for help.

postgres=#

我的 /var/lib/pgsql/data/pg_hba.conf

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                              trust
local   all         all                              ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
host    all         all         127.0.0.1/32          ident
# IPv6 local connections:
host    all         all         ::1/128               ident

如果我添加以下行,则Postgres服务failed将启动:

host    all         all        localhost             ident
host    all         all        localhost             trust

那里怎么了?

更新

我的/etc/hosts档案:

[root@5d9ca0effd7f opensips]# cat /etc/hosts
172.17.0.2      5d9ca0effd7f
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

问题答案:

在pg_hba.conf中,第 一个匹配
计数。每个文档:

具有匹配的连接类型,客户端地址,请求的数据库和用户名的第一条记录用于执行身份验证。没有“失败”或“备份”:如果选择了一条记录并且验证失败,则不会考虑后续记录。如果没有记录匹配,则拒绝访问。

请注意 相反的顺序

host    all         all         127.0.0.1/32          trust
host    all         all         127.0.0.1/32          ident

但:

host    all         all        localhost             ident
host    all         all        localhost             trust

将更改保存到后,请记住要
重新加载pg_hba.conf。(无需重新启动。)手册:

pg_hba.conf文件被读取在启动时和当主服务器处理一个SIGHUP信号。如果您在活动系统上编辑文件,则需要向邮局局长发信号(使用pg_ctl reload,调用SQL函数pg_reload_conf()或使用kill -HUP),以使其重新读取文件

如果您确实像您写的那样“添加”了这些行,则根本不会有任何效果。但是,如果您 更换 管线,则存在。

在第一种情况下,您将获得trust身份验证方法,这是一种开放策略。每个文档:

PostgreSQL假定可以连接到服务器的任何人都有权使用他们指定的任何数据库用户名(甚至超级用户名)访问数据库。

但是在第二种情况下,您将获得ident身份验证方法,该方法必须正确设置才能起作用。

另外,正如Cas稍后指出的那样,它localhost涵盖了IPv4和IPv6,而127.0.0.1/32仅适用于IPv4。如果使用IPv6,则是一个重要的区别。

如果您实际上使用的是过时的8.4版本,请转到8.4的旧手册。您知道8.4已在2014年达到停产,并且不再受支持吗?考虑升级到当前版本。

在Postgres 9.1或更高版本中,您也宁愿使用而 peer 不是ident



 类似资料:
  • 问题内容: 我已经使用Selenium和最初的PhantomJS开发了一些Python脚本。在走向自动下载时,我改用了(带头的)Firefox(运行了),然后选择了无头选项的Chrome,这样我就不会打开浏览器了。 我的第一个脚本访问一个页面和几个HTML元素,与无头Chrome完美搭配。 但是第二个 仅适用于带头的Chrome 。如果添加“无头”选项,它将不再起作用。当我尝试以无头模式打印HTM

  • 我有一个烧瓶服务器运行在http://127.0.0.1:5000和一个vuejs前端运行http://localhost:8080我已经做了api,并用postman测试了它,一切都如预期的那样工作:( > 将请求发布到/登录- (将请求发送至/登录)- 烧瓶API代码: 登录。vue: 指数vue 当我使用邮递员登录时,我得到的响应为;当我使用邮递员获取url/索引时,我得到响应。数据但当我使

  • 问题内容: 我有问题…我尝试在 “ http://api.master18.tiket.com/search/autocomplete/hotel?q=mah &token=90d2fad44172390b11527557e6250e50&secretkey=83e2f0484edbd2ad6fc9888c1e30ea44&output=json “中 获取json api 当我尝试离线模式(这意

  • 问题内容: 我正在尝试从lobb.js到我的node.js服务器的访存。但是,我在控制台中收到以下错误: 我将以下内容添加到我的node.js服务器中: 但是它仍然返回相同的错误。但是,即使这确实可行,也不是理想的解决方案,因为我希望所有用户都能够发送请求。 问题答案: 如果您希望每个人都可以访问Node应用程序,请尝试使用 这将允许来自任何来源的请求。该CORS使网站有大量的信息在不同的访问控制

  • 问题内容: 我已经在端口8080(默认)下启动并测试了Tomcat。现在,我将连接器端口更改为80,并重新启动了Tomcat,在最小的Debian 6.0安装中没有任何显示。现在,这里的窍门在哪里? 问题答案: 转到/ etc / default / tomcat6并更改为

  • 问题内容: 我是Ajax的新手,只是受过此跨域调用的任务。我们的网页上有一个文本框,用户可用来执行公司名称搜索。通过单击文本框旁边的按钮,将请求Ajax调用。不幸的是,Web服务位于单独的域中,因此自然会引起问题。 以下是我使这项工作的最佳尝试。我还要注意,此调用的目的是以XML格式返回结果,该结果将在请求的一部分中进行解析。 这又是错误消息: 对于解决方法,我不知所措,将不胜感激任何想法。 问题