无法连接到 greenplum 并显示错误消息:"no pg_hba.conf entry"
Can't connect to greenplum with error message : "no pg_hba.conf entry"
我使用的是 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
我已经对 Whosebug 做了一些研究。我修改了pg_hba.conf
,添加了一个条目
host all all 0.0.0.0/0 md5
然后用 gpstop -u
和 SELECT 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
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。
您可以通过执行以下两项操作之一来解决此问题。
当使用 psql 并且您想使用 pg_hba.conf 文件中的 HOST 条目进行身份验证时,请添加 -h 选项。这告诉客户端连接到 Greenplum 并使用主机条目进行身份验证。
psql -h mdw
您还可以像这样在 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
倒数第二行有误:
local tutorial +users 127.0.0.1/28 md5
不应为本地连接列出 IP 地址。
您 运行 gpstop -u
进行更改后是否重新加载?
我怀疑由于行无效导致重新加载失败。
删除线路并再次 运行 gpstop -u
并尝试重新连接。
我使用的是 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
我已经对 Whosebug 做了一些研究。我修改了pg_hba.conf
,添加了一个条目
host all all 0.0.0.0/0 md5
然后用 gpstop -u
和 SELECT 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
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。
您可以通过执行以下两项操作之一来解决此问题。
当使用 psql 并且您想使用 pg_hba.conf 文件中的 HOST 条目进行身份验证时,请添加 -h 选项。这告诉客户端连接到 Greenplum 并使用主机条目进行身份验证。
psql -h mdw
您还可以像这样在 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
倒数第二行有误:
local tutorial +users 127.0.0.1/28 md5
不应为本地连接列出 IP 地址。
您 运行 gpstop -u
进行更改后是否重新加载?
我怀疑由于行无效导致重新加载失败。
删除线路并再次 运行 gpstop -u
并尝试重新连接。