pg配置监听

在一 个数据库实例中 ,有些配置会影响到整个实例,这些我们称为全局配配置;有些配置只对一个数据库实例中的单个 Database 生效,或只对当前会话或者某个数据库用户生效,这一类的配置我们称为非全局配置。
PostgreSQL 有两个重要 全局配置文件: postgresql.conf 和pg_hba.cof 它们提供了很多可配置的参数,这些参数从不同层面影响着数据库系统的行为, postgresql. conf 置文件主要负责配置文件位置、资源限制、 集群复制等, pg_hba.conf 文件 负责客户端的连接和认证 这两个 件都位于初始 数据目录中

1.修改监昕地址

PostgreSQL 管理监昕地址的配置项为 postgresql.conf 文件中的 listen_addresses 默认安装只监昕本地环回地址localhost 连接不允许使用 TCP/IP 建立远程连接,启用远程连接需要修改 postgresql.conf 中的 listen_addresses 参数。用文本编辑器打开 postgresql.conf配置文件,命令如下所示:

[postgres@pghostl ~] $ vim / pgdata/10 / data / postgresql.conf 

找到名称为 listen addresses 的配置项,如下所示:

#listen addresses ocalhost what IP address (es) to l 工 sten on; 
# comma -separated list of addresses; 
# defaults to ’ localhost ’ J use for all 
# (change requires restart) 

关于 listen addresses 参数的 行注释,的含义如下:

what IP address(es) to listen on一一监昕什么 IP 地址?也就是允许用哪些 IP 地址访问,可以是一个凹,也可以是多个 IP 地址
comma-separated list of addresses ;一一以逗号分隔地址列表
defaults to ’localhost'; use for all-一默认是“ localhost ”,使用“*”允许所 有地址;大多数的高可用架构都使用 VIP 的方式访问数据库,所以我 一般设置为“*”
(change requires restart)一一修改这个参数需要重新启动数据库

去掉 listen addresses 这一行开头的“ 号, 把它的值修改为“*”,即允许所有地
址访问数据库,如下所示:

listen addresses =’*’ 

修改完成之后重启数据库使配置生效,如下所示

[root@pghostl ~]$ service postgresql- 10 restart 

2. 修改 pg_hba.conf 文件

修改监听地址之后,还需要修改 pg_hba conf 文件,回答 pg_h ba .conf 的问题:允许哪些主机可以通过 么连接方式和认证方式通过哪个数据库用户连接哪个数据库?假设我允许所有主机通过 TCP/IP 建立的连接,同时匹配 SSL 和非 SSL 连接,通过 d5 口令认证,使用 pguser 用户 ,连接 mydb 数据库,那么我们只需要在 pg hba.conf 文件中增加一行,如下所示:

[postgres@pghostl ~]$ echo host rnydb pguser 0.0.0.0/0 rndS ” >/pgdata/10/data/pg hba.conf 

修改 pg_hba.conf 文件之后需要 reload 使它生效,如下所示:

[postgres@pghostl ~] $ /opt/pgsql/bin/pg_ctl -D /pgdata/1 0/data/ reload 
server signaled 
2017 -10-1 8 10:16:00.405 CST [36171] LOG: received SIGHUP , reloading configuration 
files 

现在就可以通过远程访问数据库了通常 Windows 防火墙和 Linux 系统的 selinux iptables 也会影响远程访问,在 Linux中一般可以关闭 selinux ,添加 iptables 项允许远程访问数据库服务器或关闭 iptables ,这部分内容可以根据操作系统的文档管理配置
pg_hba.conf 是它所在数据库实例的 防火墙” ,文件格式如下:

TYPE DATABASE USER ADDRESS METHOD 
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 datab ase 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 opt ons]

这些配置看起来复杂, 实际上简单来说每一行的作用就是 :允许哪些主机可以通过什么连接方式和认证方式通过哪个数据库用户连接哪个数据库 也就是允许 ADDRESS 列的机通过 TYPE 方式以 METHOD 认证方式通过 USER 用户连接 DATABASE 数据库
连接方式
TYPE 列标识允许的连接方式,可用 的值有: local host hostssl hostnossl 说明如下:

  1. local 配使用unix 域套接字的连接 如果没有 TYPE local 条目则不允许通过Unix 套接字连接
  2. host 匹配使用 TCP IP 建立的连接,同时匹配 SSL 和非 SSL 连接 认安装只监听地环回地址 localhost 的连
    ,不允许使用 TCP IP 远程连接,启用远程连接需要修改postgresql.conf 中的 listen_addresses 参数
  3. hostssl 匹配必须是使用 SSL TCP/IP 连接hostssl 有三个前提条件:
    (1)客户端和服务端都安装 OpenSSL;
    (2)编译 PostgreSQL 的时候指定 configure 数–with-openssl 打开 SSL 支持;
    (3)postgresql.conf 中配置 ssl =on
  4. hostnoss hostss 反,它只 匹配使用非 SSL TCP IP 连接

目标数据库
DATABASE 列标识该行设置对哪个数据库生效
目标用户
USER 列标识该行设置对哪 数据库用户生效;
访问来源
ADDRESS 列标识 行设 对哪个 IP 地址或 IP 地址段生效;
认证方法
METHOD 列标识 客户端 的认证方法,常见的认证方法有 trust reject md5和password等。
reject 认证方式主要应用在这样的场景中:允许某一网段的大多数主机访问数据库,但拒绝这 网段的少数特定主
md5 password 认证方式的区别在于 md5 认证方式为双 md5 加密, password 指明文密码,所以不要在非信任网络使用 password 认证方式
scram-sha-256 PostgreSQL 10 中新 的基于 SASL 的认证方式 PostgreSQL 目前提供的最安全的认证方式 使用 scram-sha-256 认证方式不支持旧版本的客户端库 如果使用PostgreSQL 10 以前的 户端库连接数据库,会有如下错误:

[postgres@pghost2 ~]$ /usr/pgsql- 9.6/bin/psql - h pghostl -p 1921 - U postgres mydb 
psql : SCRAM authentication requ res l 工 bpq version 10 or above 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值