瀚高数据库
目录
环境
文档用途
详细信息

环境
系统平台:N/A
版本:6.0,5.6.5,5.6.4,5.6.3,5.6.1,4.5.2,4.5,4.3.4.9,4.3.4.8,4.3.4.7,4.3.4.6,4.3.4.5,4.3.4.4,4.3.4.3,4.3.4.2,4.3.4,4.7.8,4.7.7,4.7.6,4.7.5,4.3.2,4.1.1
文档用途
本文主要介绍如何对 hba.conf 进行合理的配置,以防止因hba.conf文件配置不合理从而连接不上数据库。

详细信息

1. 客户端认证文件介绍

客户端认证是由一个配置文件(通常名为 pg_hba.conf 并被存放在数据库集簇目录中,HBA 表示基于主机的认证)控制。在 initdb 初始化数据目录时,会在 $PGDATA 下生成 pg_hba.conf 文件。我们也可以把认证配置文件放在其它地方。

pg_hba.conf 文件的常用格式是一组记录,每行一条。空白行将被忽略, “#” 注释字符后面的任何文本也被忽略。记录不能跨行。一条记录由若干用空格 或制表符分隔的域组成。如果域值用双引号包围,那么它可以包含空。在数据库、用户或地址域中引用一个关键字(例如 all 或 replication)将使该词失去其特殊含义,将会只匹配一个有该名字的数据库、用户或主机。每条记录指定一种连接类型、一个客户端 IP 地址范围(如果和连接类型相关)、一个数据库名、一个用户名以及对匹配这些参数的连接所使用的认证方法。第一条匹配连接类型、客户端地址、连接请求的数据库和用户名的记录将被用于执行认证。这个过程没有“落空”或者“后备”的说法:如果选择了一条记录而且认证失败,那么将不再考虑后面的记录。如果没有匹配的记录,那么访问将被拒绝。

无论客户端以何种方式来登录数据库,都要有一个客户端可以访问的数据库用户或叫角色存在。如果是本地认证,则服务器会验证发起请求的客户端的系统用户名,系统用户名可能与数据库角色相同,也可能不同。

注意事项:

  1. “#” 号注释会忽略后面的文本。

  2. pg_hba.conf中的连接配置记录不能跨行。

  3. 一个客户端请求只会匹配pg_hba.conf中与连接类型,数据库,数据库用户和地址等信息匹配的第一行,无论登录成功或者失败都不会再去匹配其他行。

  4. pg_hba.conf读取顺序是从上往下,来读取第一个符合条件的记录。

2. pg_hba.conf配置说明

2.1 pg_hba.conf 配置格式

pg_hba.conf文件路径

1)允许本地系统上的任何用户通过 Unix 域套接字以任意数据库用户名连接到任意数据库(本地连接的默认值)。

[root@hgv4 data]# ls -l $PGDATA/pg_hba.conf-rw------- 1 root root 4298 10月 21 11:39 /opt/HighGo4.5.2-see/data/pg_hba.conf

2)任意数据库用户名连接到任意数据库,使用本地环回 TCP/IP 连接。

pg_hba.conf文件 7 种配置

#request_mode  db_name   db_role  address  mask   method    options local       database   user                auth-method  [auth-options]host        database   user  address         auth-method  [auth-options]hostssl      database   user  address         auth-method  [auth-options]hostnossl     database   user  address         auth-method  [auth-options]host        database   user  IP-address  IP-mask  auth-method [auth-options]hostssl      database   user  IP-address  IP-mask  auth-method [auth-options]hostnossl     database   user IP-address  IP-mask  auth-method  [auth-options]

2.2 pg_hba.conf各列释义:

第一列(request_mode)

local:匹配使用 Unix 域套接字(unix domain socket)的连接。 如果没有这种类型的记录,则不允许 Unix 域套接字连接。

host:匹配使用 TCP/IP 建立的连接。 host记录匹配SSL和非SSL的连接尝试, 此外还有GSSAPI 加密的或non-GSSAPI 加密的连接尝试。

hostssl:匹配使用 TCP/IP 建立的连接,但必须是使用SSL加密的连接。要使用这个选项,编译服务器的时候必须打开SSL支持。此外,在服务器启动的时候通过将postgresql.conf中的ssl 设置为on,打开的SSL支持。否则,hostssl记录会被忽略,并且会记录一个警告说它无法匹配任何连接。

hostnossl:这条记录的行为与hostssl相反;它只匹配那些在 TCP/IP上不使用SSL的连接。

host/hostssl/hostnossl总结: 认证方法通过TCP/IP连接,带有ssl后缀的认证方式使用SSL连接,带有nossl后缀的认证方式不使用SSL连接。

第二列(db_name)

database:指定要访问的数据库sameuser表示如果请求的数据库名与角色名相同则匹配。replication表示允许replication连接请求,此时不指定任何特定的数据库。可以用逗号分隔来指定多个数据库,值 all 匹配所有的数据库。

第三列(db_role)

user:指定访问数据库使用的数据库角色名,值 all 匹配所有存在的数据库角色。

第四列(address)

IP-address:声明这条记录匹配的客户端机器的地址。可以是主机名或者ip地址。ip地址可以以常用的两种方式指定。0.0.0.0/0代表全部IPv4地址,::/0代表全部IPv6地址。

第五列(mask)

IP-mask:这两个域可以被用作IP-address / mask-length记号法的替代方案。和指定掩码长度不同,实际的掩码被指定在一个单独的列中。例如,255.0.0.0表示 IPv4 CIDR 掩码长度 8,而255.255.255.255表示 CIDR 掩码长度 32。这些域只适用于host、hostssl和hostnossl记录。

第六列(method:auth-method)

trust:无条件的允许连接。这个方法允许任何人用任意一个用户登录到数据库。

md5:要求客户端提供一个MD5加密的口令进行认证。

password:要求客户提供一个未加密的密码进行身份验证,不安全。

ident:使用ident服务器认证用户。

ldap:用LDAP服务器进行认证

sm3:执行 sm3 认证来验证用户的口令。sm3 算法是国家密码算法的一种散列算法,在用户认证过程中,和 md5 的过程一致,但是算法的安全度比 md5 安全的多,并且 sm3 算法自主可控,当然,sm3 也是以散列值的形式存在于数据库的用户表

pam:使用PAM认证。

reject:无条件地拒绝连接。这有助于从一个组中“过滤出”特定主机,例如一个reject行可以阻塞一个特定的主机连接,而后面一行允许一个特定网络中的其余主机进行连接。

第七列(options)

auth-options :以name=value的形式为这些认证方法指定一些选项。比较常用的是指定用户名映射,格式为map=map-name,map-name指定pg_ident.conf文件中的一条命名用户名映射记录。此列一般极少配置。

2.3 pg_hba.conf 配置示例

说明:pg_hba.conf配置格式,我们可以简化为以下两种方式:

远程客户端访问记录的格式:

host   database   role   address   auth-method

本地UNIX-域套接字记录的格式:

local   database   role   auth-method

1)允许本地系统上的任何用户通过 Unix 域套接字以任意数据库用户名连接到任意数据库(本地连接的默认值)。

# TYPE  DATABASE   USER       ADDRESS       METHODlocal   all      all                    trust

2)任意数据库用户名连接到任意数据库,使用本地环回 TCP/IP 连接。

# TYPE  DATABASE   USER       ADDRESS        METHODhost    all      all      127.0.0.1/32       trust

3)任意数据库用户名连接到任意数据库,使用独立的掩码列

# TYPE  DATABASE    USER  IP-ADDRESS   IP-MASK        METHODhost    all      all    127.0.0.1  255.255.255.255    trust

4) 任意数据库用户名连接到任意数据库,IPv6 上相同的规则

# TYPE  DATABASE    USER    ADDRESS                METHODhost    all       all    ::1/128                trust

5)任意数据库用户名连接到任意数据库,使用主机名的相同规则(通常同时覆盖 IPv4 和 IPv6)。

# TYPE  DATABASE    USER    ADDRESS                METHODhost    all       all    localhost               trust

6)允许来自任意具有 IP 地址192.168.93.x 的主机上任意用户以 ident 为该连接所报告的相同用户名连接到数据库 “highgo”。

# TYPE  DATABASE    USER    ADDRESS                METHODhost    highgo     all    192.168.93.0/24           ident

7)如果用户的口令被正确提供,允许来自主机 192.168.12.10 的任意用户连接到数据库 “highgo”

# TYPE  DATABASE   USER     ADDRESS               METHODhost    highgo     all    192.168.12.10/32           md5

8)如果没有前面的 “host” 行,这两行表示将拒绝所有来自 192.168.54.1的连接(因为那些项将首先被匹配),允许来自网络中其他任何地方的 md5 口令方式的认证连接,零掩码匹配任意主机。

# TYPE  DATABASE   USER      ADDRESS               METHODhost    all      all      192.168.54.1/32           rejecthost    all      all       0.0.0.0/0              md5

9)无条件的允许来自网络中其他任何地方的 md5 口令方式的认证连接。

# TYPE  DATABASE   USER      ADDRESS                METHODhost    all      all       0.0.0.0/0              md5

2.4 配置注意事项:

1)数据库名与用户名注意大小写。

2)address(用户的IP范围)的值的格式是:IP/数值

数值取值范围为:0,8,16,24,32 即表示掩码bit的个数。例:32  ->  192.168.1.1/32 表示必须是来自这个IP地址的访问才合法。24  ->  192.168.1.0/24 表示只要来自192.168.1.0 ~ 192.168.1.255的都合法。16  ->  192.168.0.0/16 表示只要来自192.168.0.0 ~ 192.168.255.255的都合法。8  ->  192.0.0.0/16 表示只要来自192.0.0.0 ~ 192.255.255.255的都合法。0  ->  0.0.0.0/0  表示全部IP地址都合法,/左边的IP地址随便了只要是合法的IP地址即可。

3)完成上面两个配置文件的修改以后,为了让配置生效,需要重新启动或 reload 数据库服务。

4)要考虑下是否要支持ssl 协议,在需要的时候添加添加ssl 选项。

3. 常见问题处理方法

3.1 无法连接到服务器:不支持 13 认证方式

psql -U syssso -d highgo -p 5866 -h 192.168.0.131

psql: 错误: 无法连接到服务器:不支持 13 认证方式.

处理方法:

1)如果数据库默认使用 sm3 (highgodb安全版中的认证方式) 身份验证算法,需要改为 md5,步骤如下:2)修改 postgresql.conf 文件 password_encryption 参数由 sm3 修改为 md53)重启数据库 pg_ctl restart4)sysdba 登陆,修改密码为 1qaz!QAZ;syssao、syssso 及其他用户同理。5)修改 pg_hba 文件加密方式改为 md56)重启数据库 pg_ctl restart7)登录数据库,输入密码 1qaz!QAZ 进行验证。说明:密码可根据自己的环境进行修改。

3.2 FATAL: no pg_hba.conf entry for host “123.123.123.123”, user “andym”, database “testdb”

处理方法:

表示已和服务器进行通信,但服务器拒绝了连接请求,没有在其 pg_hba.conf 配置文件里找到匹配项,需要在pg——hba.conf中添加匹配选项。

3.3 FATAL: password authentication failed for user “andym”

处理方法:

这样的消息表示已和服务器进行通信,但是必须通过pg_hba.conf文件中指定的认证方法。检查你提供的口令,认证类型。
3.4 FATAL: user “andym” does not exist

处理方法:

指示的数据库用户没有被找到,需检查数据库名称是否正确。
3.5 FATAL: database “testdb” does not exist

处理方法:

你试图连接的数据库不存在。请注意如果你没有声明数据库名。

连接数据库失败提示hba.conf不符合的处理方法相关推荐

  1. sql server 2008建域时提示admin密码不符合要求解决方法

    安装好 Windows server 2008企业版之后,设置Administrator的密码也顺利通过,但在建Active Directory时,却总提示Administrator账号密码不符合要求 ...

  2. cad无法启动计算机丢失,Win7系统开启Cad软件失败提示丢失ac1st16.dll怎么解决

    Win7系统开启Cad软件失败提示丢失ac1st16.dll怎么解决?此问题困扰着许多用户,Cad作为一款热门的设计辅助工具,想必使用的用户不再少数.有用户在Win7系统下开启Cad软件的时候,出现了 ...

  3. 无法启动因为计算机丢失ac,Win7系统启动cad提示丢失ac1st16.dll的解决方法

    Win7系统启动cad提示丢失ac1st16.dll的解决方法 在Win7系统启动cad提示丢失ac1st16.dll的解决方法介绍,希望能够对大家有所帮助! 方法/步骤 1.右键单击我的电脑-属性 ...

  4. 阿里云虚拟主机安装wordpress,提示连接数据库失败的解决方法

    阿里云虚拟主机安装wordpress,提示连接数据库失败的解决方法 参考文章: (1)阿里云虚拟主机安装wordpress,提示连接数据库失败的解决方法 (2)https://www.cnblogs. ...

  5. java中连接数据库失败,提示:Acc?¨s refus?? pour l'utilisateur: 'root'@'@localhost' (mot de passe: OUI)

    java中连接数据库失败,提示:Acc?¨s refus?? pour l'utilisateur: 'root'@'@localhost' (mot de passe: OUI) 这是由于连接数据库 ...

  6. 连接数据库时提示归档器失败 ORA-00257: archiver error

    (1)问题现象 SQL> conn hr/hr ERROR: ORA-00257: archiver error. Connectinternal only, until freed. Warn ...

  7. 织梦Dedecms错误警告:连接数据库失败,可能数据库密码不对

    很多站长在使用dedecms的过程中会遇到这样的错误提示"DedeCMS Error Track:DedeCMS错误警告:连接数据库失败,可能数据库密码不对或数据库服务器出错!", ...

  8. proftpd启动失败提示unable to determine IP address of “xxx.com”

    proftpd启动失败提示unable to determine IP address of "xxx.com" 这种proftpd启动失败的原因是无法解析后面主机的IP地址,解决 ...

  9. Jmeter+ant+Jenkins构建接口自动化测试时构建失败 提示:Fatal Error! 字符引用 #原因...

    Jmeter+ant+Jenkins构建接口自动化测试时构建失败 提示:Fatal Error! 字符引用 "&#原因:接口响应数据中有&# 转载于:https://www. ...

最新文章

  1. JS、JQuery和ExtJs的跨域处理
  2. iis 重新安装后 重新注册asp.net
  3. 软件需求说明书 概要设计说明书 项目开发计划 详细设计说明书 模版
  4. python系统自学_如何系统地自学python
  5. 使窗口(和 MDI 子窗口)的关闭按钮变灰的方法 - 回复 梦想成真
  6. 洛谷2149 Elaxia的路线(dp+最短路)
  7. 20200504:力扣187周赛下
  8. 黑马程序员---java基础------------------基础中的基础学习
  9. [51nod1084]矩阵取数问题 V2
  10. sql server哪个版本比较好用_给视频加音乐的软件哪个比较好用?
  11. FZU《C语言程序综合设计》
  12. 脚本文件和函数文件的区别
  13. 基于特征点检测的人脸融合技术
  14. 内存单元地址求字节大小的计算方法
  15. 喝王老吉可延长寿命大约10%?
  16. 43.Django04
  17. vue中使用tinymce富文本
  18. 说说wps jsa的ListBox控件的数组写入方法
  19. 深入浅出Java clone技术
  20. PaPerPass V3.0使用教程

热门文章

  1. 奶块服务器维护多久,奶块为什么要更新维护 | 手游网游页游攻略大全
  2. dos命令为java程序赋值_在DOS命令行状态下,如果源程序HelloWorld.java在当前目录下,那么编译该程序的命令是() (5.0分)_学小易找答案...
  3. Charles抓包工具测试实战
  4. cocosCreator 精灵图片加载(一键还原大小+动态修改图片)
  5. 先用总分升序再用计算机降序,怎样用升序降序给EXCEL排名
  6. Wikipedia iOS客户端源码
  7. Graphql入门_1
  8. Flatten()详解
  9. 8-2 实现Time类中的运算符重载
  10. c罗python可视化分析_关于C罗“冲刺速度”这种隐私问题,我们在Kaggle上找到了数据集,然后。。。...