28000 授权规范无效
连接到 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;