主页 > 游戏开发  > 

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

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写在最前面,即使后面有允许连接的,那么谁也访问不了

标签:

8.PG实例层连接访问管理(pg系列课程)第2遍由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“8.PG实例层连接访问管理(pg系列课程)第2遍