当前位置: 首页 > news >正文

8.PG实例层连接访问管理(pg系列课程) 第2遍

一、概述

实例访问控制就像是一道防火墙,用它来控制来自于不同主机、不同用户是否
允许访问指定的数据库、以及验证方式。

二、客户端配置认证文件

客户端配置认证文件: pg_hba.conf

格式如下:

# TYPE   DATABASE        USER            ADDRESS                 METHOD

(一)TYPE:指定连接类型

1、local

表示本地连接,只对Unix/Linux系统有效,使用socket方式登录


2、host

表示主机通过TCP/IP连接,即远程连接


3、hostssl

表示主机连接需要SSL加密方式连接,即远程连接时加密

本地连接:无需指定主机名和端口
[postgres@db ~]$psql -U u1 -d postgres
psql (16.0)
Type "help" for help.

postgres=# \q

远程连接:需要指定主机名和端口
[postgres@db ~]$psql -U u1 -d postgres -h localhost -p 5432
psql (16.0)
Type "help" for help.

postgres=#

(二)、DATABASE:指定连接的数据库名

1、all

表示所有的数据库


2、db_name

表示指定的数据库


3、replication

表示主备复制时的连接

(三)USER:指定连接的用户名

pgsql -U user

1、all

表有所有用户

2、user name

表示指定的用户


3、+group_name

表示一组用户


4、@file_name
表示文件中包含的用户列表

(四)ADDRESS:指定访问的客户端主机

1、127.0.0.1/32

表示本地客户端主机。

/32:这是一种子网掩码的简略表示法,表示子网掩码为 255.255.255.255 。

“127.0.0.1/32” 就明确地指定了一个唯一的主机地址,不存在网络内其他主机的可能性, 这个表示形式强调了 127.0.0.1 是一个独立的、唯一的地址 。


2、0.0.0.0/0

表示所有客户端主机

3、host_name

表示指定的主机名(hosts文件中包含)


4、ip_addr/net mask

表示指定的ip地址或者网段。

例如:192.168.18.0/24

“192.168.18.0/24” 代表了一个局域网网络。地址范围是从 192.168.18.1 到 192.168.18.254

(五)METHOD:指定验证方式

1、trust

信任客户端连接,无需提供密码


2、scram-sha-256

这是当前提供的方法中最安全的一种,但是旧的客户端库不支持
这种方法。


3、md5

它能防止口令嗅探并且防止口令在服务器上以明文存储,但是无法保护攻
击者想办法从服务器上窃取了口令哈希的情况。


4、password

方法password以明文形式发送口令,因此它对于口令“嗅探”攻击很
脆弱。


5、ident

该模式下系统会将请求发起者的操作系统用户映射为PostgessQl据库内
部用户,并以该内部用户的权限登录,且此时无需提供登录密码。操作系统用户
与数据库内部用户之间的映射关系会记录在pg_ident.conf文件中。


6、peer

该模式使用连接发起端的操作系统名进行身份验证。仅限于Linux、BSD、
MacOsx和Solaris,并且仅可用于本地服务器发起的连接。


7、reject

该模式表示拒绝所有请求

(六)连接案例

1、psql

在postgres操作系统用户使用psql等同于psql -U postgres -d postgres

在test操作系统用户使用psql等同于psql -U test -d test ,这样有可能连接失败。

2、本地登录需要使用密码

[postgres@db /var/postgre/data]$vi pg_hba.conf

[postgres@db /var/postgre/data]$
local   all             all                                     md5

修改使配置生效
[postgres@db /var/postgre/data]$pg_ctl reload
server signaled
[postgres@db /var/postgre/data]$psql
psql (16.0)
Type "help" for help.

postgres=#

3、远程连接

[postgres@db /var/postgre/data]$vi pg_hba.conf
[postgres@db /var/postgre/data]$
host    all             all             127.0.0.1/32            trust


修改使配置生效
[postgres@db /var/postgre/data]$pg_ctl reload
[postgres@db /var/postgre/data]$psql -U postgres -d postgres -h 127.0.0.1 -p 5432
psql (16.0)
Type "help" for help.

postgres=# 

4、拒绝某台主机连接

[postgres@db /var/postgre/data]$vi pg_hba.conf
[postgres@db /var/postgre/data]$
host    all             all             xc_db01            reject

修改使配置生效
[postgres@db /var/postgre/data]$pg_ctl reload

xc_db01是主机名,主机名和ip的映射关系可以写入到/etc/hosts文件中。这里也可以直接写ip

5、配置注意事项

包含范围越少的要写在前面,范围大的写在后面。如果把范围大的写成前面,比如reject某个网段的,如果写在前面的话,那么即使后面写了这个网段内的某个ip允许连接的话,实际上也访问不了。

例如:如果把 host    all             all             0/0            reject写在最前面,即使后面有允许连接的,那么谁也访问不了

相关文章:

  • 【Spring+MyBatis】_图书管理系统(下篇)
  • 升级 SpringBoot3 全项目讲解 — Spring Boot 3 中如何发Http请求?
  • 检测网络安全漏洞 工具
  • 【R语言】非参数检验
  • 技术总结 | MySQL面试知识点
  • Mysql基础语句
  • AIGC:开启内容创作新纪元,我们如何看待它的影响与前景?
  • ApplicationContextInitializer钩子函数学习
  • Linux环境开发工具
  • Three.js 快速入门教程【二】透视投影相机
  • 【个人总结】7. Linux 工作三年的嵌入式常见知识点梳理及开发技术要点(欢迎指正、补充)
  • 在IDEA的Maven中(同步所有Maven项目)和(重新加载所有Maven项目)的区别
  • 《95015网络安全应急响应分析报告(2024)》
  • 激光雷达YDLIDAR X2 SDK安装
  • RESTful 的特点与普通 Web API 的区别
  • 【GPT】从GPT1到GPT3
  • 某大型业务系统技术栈介绍【应对面试】
  • C++中的线程同步方式
  • Linux 配置ntp时间同步
  • 代码随想录算法训练营第四十三天| 动态规划06
  • 我驻苏丹使馆建议在苏中国公民尽快撤离
  • 魔都眼|上海多家商场打开绿色通道,助力外贸出口商品转内销
  • 多省份晒出“五一”旅游“成绩单”:北京游客接待量、旅游消费创历史新高
  • 体坛联播|米兰逆转热那亚豪取3连胜,阿诺德官宣离开利物浦
  • 繁荣活跃!“五一”假期全国重点零售和餐饮企业销售额同比增长6.3%
  • 解放军仪仗司礼大队仪仗分队参加纪念苏联伟大卫国战争胜利80周年阅兵活动