1、允许远程访问数据库
在默认情况下, Pos tgreSQL 实例是不允许通过远程访问数据库的,如下所示:
[postgres@pghostl ~]♀ netstat -nlt I grep 1921
Active Internet connections (onl y servers)
Proto Recv Q Send Q Local Address Foreign Address
tcp 0 0 127 . 0 . 0.1:1921 0 . 0 . 0 . 0 : *
tcp 0 0 : :1:1921 …*
从其他 机访问数据库端口,将会被拒绝,如下所示
[postgres@pghost2 ~]$ telnet pghostl 1921
Trying pghostl ...
telnet : connect to address pghostl: Connection refused
想要外网访问需要修改两个配置文件,一个配置文件是postgresql.conf
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,也可以是多个 IP 地址
comma-separated list of addresses ;一一以逗号分隔地址列表
defaults to ’localhost'; use for all-一默认是“ localhost ”,使用“*”允许所有地址;大多数的高可用架构都使用 VIP 的方式访问数据库,所以我 一般设置为“*”
(change requires restart)一一修改这个参数需要重新启动数据库
去掉 listen addresses 这一行开头的“ 号, 把它的值修改为“*”,即允许所有地
址访问数据库,如下所示:
listen addresses =’*’
第二个文件是pg_hba.conf 文件
修改监听地址之后,还需要修改 pg_hba conf 文件,回答 pg_h ba .conf 的问题:允许哪些主机可以通过 么连接方式和认证方式通过哪个数据库用户连接哪个数据库?假设我允许所有主机通过 TCP/IP 建立的连接,同时匹配 SSL 和非 SSL 连接,通过 d5 口令认证,使用 pguser 用户 ,连接 mydb 数据库,那么我们只需要在 pg hba.conf 文件中增加一行,如下所示:
host rnydb pguser 0.0.0.0/0 md5
也可以把所有的开放,如下:
host all all 0.0.0.0/0 md5
修改完两个文件之后,在重启一下服务就可以了:
[root@pghostl ~]$ service postgresql- 10 restart