Redrock Postgres 文档
主页 切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页

28000 授权规范无效

错误: 没有用于主机的pg_hba.conf记录

连接到PostgreSQL可能会触发如下所示的错误消息:

FATAL: no pg_hba.conf entry for host "172.118.10.5", user "postgres", database "postgres", SSL off

此错误通常是由于pg_hba.conf文件中的条目不完整而触发的。通常,此配置文件控制客户端身份验证,并存储在数据库实例的数据目录中。

pg_hba.conf文件的一般格式包含一组记录,每行一条。记录包含许多由空格和/或制表符分隔的字段。字段可以包含空格,但我们需要用引号包围字段值。

每条记录指定连接类型、客户端 IP 地址范围、数据库名称、用户名以及与这些参数匹配的连接的身份验证方法。

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

解决方案:

修改数据目录中的pg_hba.conf文件,以定义从所有网络到PostgreSQL服务器应使用哪种身份验证策略,并添加我们尝试连接的主机 IP 地址条目。我们可以输入要提供访问权限的主机的条目:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         172.118.10.5/32       md5

然后,重新启动数据库服务以重新加载配置:

# systemctl restart postgresql.service

请重试使用您的数据库客户端工具连接数据库服务,我们应该能够连接而不会出现任何错误。

错误: 角色不存在

连接到PostgreSQL可能会触发如下所示的错误消息:

FATAL:  role "andym" does not exist

指定的数据库用户没有被找到。请注意如果你没有声明用户名,默认会用运行数据库客户端工具的操作系统用户名作为用户名,这可能正确也可能不正确。

错误: 角色不允许登录

连接到PostgreSQL可能会触发如下所示的错误消息:

FATAL:  role "andym" is not permitted to log in

指定的数据库角色不允许登录。您必须授予角色登录权限。一种方法是以超级用户身份登录并更新角色:

ALTER ROLE "andym" WITH LOGIN;