【问题标题】:Can't connect to greenplum with error message : "no pg_hba.conf entry"无法连接到 greenplum 并显示错误消息:“没有 pg_hba.conf 条目”
【发布时间】:2016-06-13 19:48:01
【问题描述】:

我使用的是gp 4.3.7.2,我按照手册http://120.52.72.46/gpdb.docs.pivotal.io/c3pr90ntcsf0/gs/43/pdf/GPDB43xGettingStarted.pdf

我可以使用管理员用户连接到服务器,但是当我尝试使用其他用户时,我收到错误消息

psql: FATAL:  no pg_hba.conf entry for host "[local]", user "gpuser", database "rdw", SSL off

我已经对 stackoverflow 做了一些研究。我修改了pg_hba.conf,添加一个条目

host  all  all 0.0.0.0/0 md5

然后用gpstop -uSELECT pg_reload_conf();重新加载配置文件,甚至尝试重新启动gp服务器。但我仍然遇到同样的错误。

我还尝试了其他条目,例如

host    all             all             127.0.0.1/32            md5

这也没有用。

请告诉我如何解决这个问题。

编辑:

我以单节点模式重新安装了数据库,并完全按照前面提到的手册进行操作。我创建了两个用户:user1、user2 并将角色users 授予这两个用户。 我执行了什么: 在命令行中:

$ createuser -P user1
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n

在 psql 中:

=# CREATE USER user2 WITH PASSWORD 'changeme' CREATEDB NOSUPERUSER;    
=# CREATE ROLE users;
=# GRANT users TO user1, user2;

这是我的整个 pg_hba.conf,位于/data/gp/server/master/gpsne-1/pg_hba.conf。我添加了最后 3 行。

local    all         hadoop         ident
host     all         hadoop         127.0.0.1/28    trust
host     all         hadoop         10.10.10.32/32       trust
host     all         hadoop         ::1/128       trust
host     all         hadoop         fe80::d6ae:52ff:feb9:87c2/128       trust
local    replication hadoop         ident
host     replication hadoop         samenet       trust
local tutorial +users md5
local tutorial +users 127.0.0.1/28 md5
hostssl tutorial +users samenet md5

但我仍然遇到同样的错误。

psql: FATAL:  no pg_hba.conf entry for host "[local]", user "user1", database "tutorial", SSL off

当我安装数据库时,我收到一条警告消息,不确定是否相关。

20160302:10:44:51:023434 gpinitsystem:bobcat04:hadoop-[WARN]:-Host 127.0.0.1 is assigned as localhost in /etc/hosts
20160302:10:44:51:023434 gpinitsystem:bobcat04:hadoop-[WARN]:-This will cause segment->master communication failures
20160302:10:44:51:023434 gpinitsystem:bobcat04:hadoop-[WARN]:-Remove 127.0.0.1 from local host line in /etc/hosts

【问题讨论】:

  • 您添加的条目似乎正确。问题一定出在其他地方。也许您更改了错误的“pg_hba.conf”文件,或者没有重新启动服务器。
  • "[local]" 在 Unix 域套接字中?这需要“本地”而不是“主机”。
  • 请发布您的整个 pg_hba.conf,但不要包含 cmets。
  • @A.Scherbaum 谢谢你的建议,我提供更多细节。

标签: postgresql greenplum


【解决方案1】:

你在倒数第二行有错误:

local tutorial +users 127.0.0.1/28 md5

不应为本地连接列出 IP 地址。

您是否在进行更改后运行gpstop -u 重新加载? 我怀疑由于无效的行而导致重新加载失败。

删除该行并再次运行gpstop -u 并尝试再次连接。

【讨论】:

  • 谢谢!我删除了这条线,它可以工作!但是 GP 入门手册说要添加该条目...我会将此报告给 Pivotal。
【解决方案2】:
psql: FATAL:  no pg_hba.conf entry for host "[local]", user "gpuser", database "rdw", SSL off

这意味着您正在尝试使用 psql 从主主机连接到 Greenplum,而无需指定主机名。如果你只是输入这个:

psql

psql 客户端将尝试连接到 Greenplum 的本地实例。您添加的 pg_hba.conf 条目用于 HOST 身份验证,而不是 LOCAL。

您可以通过执行以下两项操作之一来解决此问题。

  1. 当使用 psql 并且您想使用 pg_hba.conf 文件中的 HOST 条目进行身份验证时,添加 -h 选项。这告诉客户端连接到 Greenplum 并使用主机条目进行身份验证。

    psql -h mdw
    
  2. 您也可以像这样在 pg_hba.conf 文件的底部添加一个条目:

    local all all md5
    

    或者如果你信任本地的每个人

    local all all trust
    

有关 pg_hba.conf 文件的更多信息在这里:http://www.postgresql.org/docs/8.2/static/auth-pg-hba-conf.html

【讨论】:

  • 感谢您的回复。但这并不能解决我的问题:(请查看我添加到问题中的更多信息。
猜你喜欢
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 2014-09-19
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 2016-04-12
相关资源
最近更新 更多