前言:
在上一篇的内容为大家介绍了我们HaloDB中的postgresql.conf文件,带大家熟悉了conf文件的主要作用,相关参数,以及参数的修改方式等内容,在本篇内容中为大家介绍HaloDB中的另一个十分重要的pg_hba.conf文件。让我们开始今天的内容。
来,日常打广环节到了!
我们的HaloDB 是业内首次创造性的提出插件式内核架构设计,通过配置的方式,适配不同的应用场景,打造全场景覆盖的能力,满足企业大部分数据存储处理需求,从而消除数据孤岛,降低系统复杂度,保护企业既有投资,降低企业成本。同时支持x86、arm等异构平台之间的混合部署。
如果有对我们的产品感兴趣的朋友可以通过主页的联系方式与我取得联系,获取license来安装体验,当然您如果有好的建议也可以提给我们,下面正式开始今天的内容。
一、pg_hba.conf的主要作用:
pg_hba.conf文件是HaloDB数据库中的一个配置文件,主要用于控制客户端如何连接到数据库服务器以及哪些用户有权限访问数据库。具体来说,pg_hba.conf文件定义了主机地址、用户、数据库以及认证方法之间的映射关系,包括允许或拒绝连接请求的规则。
我们通过编辑pg_hba.conf文件,可以配置数据库服务器允许哪些主机地址连接、哪些用户可以访问哪些数据库、使用哪种认证方法等。这样可以有效地控制数据库的访问权限,保护数据库的安全性。

主要的配置信息如下:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 0/0 md5
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust 其中,在pg_hba.conf中,每一行代表一个完整的配置链路,每行都包含4-5个字段,每个字段的含义如下,我用一张图表来说明:

2.1 本地的trust认证:
# TYPE DATABASE USER ADDRESS METHO
local all all trust在该配置下,在使用数据库用户登录时不会提示输入密码:
[halo@halodb1 halo]$ psql -p 1921 -U halo
psql (1.0.14.10 (231130))
Type "help" for help.
halo0root=#
2.2 本地的ident认证:
1、修改pg_hba.conf文件
vi pg_hba.conf
# TYPE DATABASE USER ADDRESS METHO
local all all ident[halo@halodb1 ~]$ psql -p 1921 -U halozz
2024-02-29 12:25:26.185 CST [3431] LOG: provided user name (halozz) and authenticated user name (halo) do not match
2024-02-29 12:25:26.185 CST [3431] FATAL: Peer authentication failed for user "halozz"
2024-02-29 12:25:26.185 CST [3431] DETAIL: Connection matched pg_hba.conf line 89: "local all all ident"
psql: error: connection to server on socket "/var/run/halo/.s.PGSQL.1921" failed: FATAL: Peer authentication failed for user "halozz"从这个错误中,我们可以看到,提示的是Peer authentication failed,这是因为,实际上我们在本地配置文件pg_hba.conf中的METHOD设置为trust时,它实际会被替换成peer认证,也就是说TYPE为local时,设置METHOD为ident和peer的效果是一致的。此时我们需要先以halo的身份登录,然后才能链接服务端:
[halo@halodb1 ~]$ psql -p 1921 -U halo
psql (1.0.14.10 (231130))
Type "help" for help.
halo0root=#
2.3 本地的MD5认证:
这种认证方式是我们在日常工作以及生产环境中所使用最多的一种方式。
使用MD5认证的好处包括:
1. 加密性强:MD5是一种不可逆的加密算法,可以将用户密码等敏感信息加密存储在数据库中,提高数据安全性。
2. 快速计算:MD5算法计算速度快,可以在短时间内生成加密后的摘要,提高系统性能。
3. 一致性验证:MD5算法可以用于验证数据的一致性,确保数据在传输过程中没有被篡改。
4. 广泛应用:MD5算法被广泛应用于各种系统中,具有较高的通用性和稳定性。
当然,需要注意的是,MD5算法存在碰撞攻击的风险,即不同的输入可能会生成相同的MD5值,因此在安全性要求较高的场景下,建议使用更加安全的加密算法,如SHA-256等。
在此种认证方式下,在本地登录时会提示要输入密码:
vi pg_hba.conf
# TYPE DATABASE USER ADDRESS METHO
local all test md5[halo@halodb1 halo]$ psql
psql (1.0.14.10 (231130))
Type "help" for help.
halo0root=# alter user halo with password 'halodbzz';
ALTER ROLE
halo0root=# \q
[halo@halodb1 halo]$ vi pg_hba.conf
[halo@halodb1 halo]$ pg_ctl reload
server signaled
[halo@halodb1 halo]$ psql -p 1921 -U halo
Password for user halo:
psql (1.0.14.10 (231130))
Type "help" for help.
halo0root=# 在上文中我首先先修改了超级用户halo的密码,然后进行的试验,因为,我把之前改过的密码忘了,大家自己在做实验的时候,可以不做这个步骤。
三、总结:
HaloDB中的pg_hba.conf文件在数据库中具有重要作用。它可以控制客户端连接数据库服务器的权限和认证方式,限制特定用户、数据库或主机地址的访问权限,保护数据库安全。通过编辑pg_hba.conf文件,管理员可以灵活控制数据库访问权限,选择适合的认证方式,确保只有经过授权的用户才能连接数据库,提高数据库安全性。因此,管理员应重视pg_hba.conf文件的配置和管理。对于新手小白来说也应该重视此文件的学习和掌握。
虽然是慢工,但是不是什么细活。




