postgres启用远程白名单登录与修改密码登录
postgres启用远程白名单登录与修改密码登录
1. postgres远程登录及白名单
一般情况下,建议关闭postgres的远程登录。如果确实需要开启远程登录,建议设置远程登录白名单。
查找postgres配置文件路径
find / -name pg_hba.conf
find / -name postgresql.conf
修改配置文件 postgresql.conf
# 代表只允许从本机连接,这句话注释掉也一样
listen_addresses = 'localhost'
修改为允许远程连接
listen_addresses = '*'
重启postgres后生效,这时候任何远程IP都可以连接,我们下面继续配置连接白名单。
修改配置文件 pg_hba.conf
# 如下代表仅允许 127.0.0.1 本机连接
host all all 127.0.0.1/32 trust
# 如下表示允许所有IP
host all all 0.0.0.0/0 trust
# 如下表示允许 192.168.1.1 的IP远程连接
host all all 192.168.1.1/32 trust
# 如下表示允许 192.168.1.0/24 网段的IP远程连接
host all all 192.168.1.0/24 trust
重启postgres后生效,只有白名单内的IP可以连接,其他IP均连接失败。
2. postgres修改密码
登录linux机器后,执行如下命令
# su postgres
bash-4.2$ psql
postgres=# alter user postgres with password 'new password';
postgres=# \q
bash-4.2$ exit
#
3. postgres启用密码
之前按照这种方式修改密码,但偶然发现不使用密码或者使用错误的密码都能够连接该数据库,后来发现还是配置的问题。
配置文件 pg_hba.conf
host all all 192.168.1.1/32 trust
trust 代表可信的连接,意思是没有密码也行(密码错误也行,因为没有校验)
还有如下的选项可以配置
# md5是常用的密码认证方式,密码是以md5形式传送给数据库,较安全
# password是以明文密码传送给数据库,建议不要在生产环境中使用
# reject是拒绝认证
# ident是Linux下PostgreSQL默认的local认证方式,凡是能正确登录服务器的操作系统用户(注:不是数据库用户)就能使用本用户映射的数据库用户不需密码登录数据库
我们可以将配置修改为如下,即可正常开启密码登录
host all all 192.168.1.1/32 md5
参考资料
- PostgreSQL pg_hba.conf 文件简析, https://www.cnblogs.com/hiloves/archive/2011/08/20/2147043.html
- Postgresql 帐号密码修改方法, https://blog.csdn.net/starnight_cbj/article/details/7332422
- Linux 修改PostgreSQL外部访问白名单, https://www.cnblogs.com/lianche/p/3611732.html