连接方式(type)
连接方式分为三种:local、host、hostssl、hostnossl。
- local:使用本地UNIX套接字连接,适用于本地登录。
- host:使用TCP/IP连接,支持SSL和非SSL模式。IPv4地址和IPv6地址均可使用,具体取决于连接方式。
- hostssl:仅支持SSL-TCP/IP连接。
- hostnossl:仅支持非SSL-TCP/IP连接。
数据库(database)
数据库部分用于声明允许访问的数据库名。支持单个数据库名或多个数据库名(用逗号分隔)。
- all:表示匹配所有数据库,但优先级最低。如果有其他匹配规则,则该条记录不适用。
用户名(user)
用户名部分指定允许访问的数据库用户。可以包含多个用户(用逗号分隔)。
- 用户名前缀为@表示组名。例如,@group1表示组group1中的用户。
- 用户名和pg_hba.conf必须位于同一目录,且文件名前缀为@。
CIDR-ADDRESS
IP地址部分支持CIDR格式(ip/mask)。
- 对于local连接方式,这一部分可选。
- 可以指定单个IP地址或一个网段。
认证方法(authentication method)
认证方法决定了客户端如何验证身份。常见方法包括:
- ident:基于操作系统用户的身份验证,默认为local认证方式。
- md5:常用密码认证方式,安全性高,且不需要操作系统用户映射。
- password:使用明文密码认证,建议仅用于非生产环境。
- trust:允许任意用户名访问数据库,无需密码或身份验证,建议仅用于非生产环境。
- reject:拒绝认证,阻止用户登录。
示例配置
local db1 user1 rejectlocal all all ident
- 第一条记录允许本地连接,用户user1访问数据库db1,且拒绝其他用户。
- 第二条记录允许本地连接,所有数据库(除了db1)允许所有用户使用身份验证方式登录。
通过合理配置pg_hba.conf,可以精确控制数据库访问权限,提升安全性和管理效率。