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

参考资料

  1. PostgreSQL pg_hba.conf 文件简析, https://www.cnblogs.com/hiloves/archive/2011/08/20/2147043.html
  2. Postgresql 帐号密码修改方法, https://blog.csdn.net/starnight_cbj/article/details/7332422
  3. Linux 修改PostgreSQL外部访问白名单, https://www.cnblogs.com/lianche/p/3611732.html
Table of Contents