PostgreSQL的配置

两个配置文件:

  • PostgreSQL的远程连接配置;
  • PostgreSQL的日志配置。

PostgreSQL的主要配置放在数据目录下的, postgresql.conf 以及 pg_hba.conf 配置文件

1
2
# 配置文件目录
ls -l /var/lib/pgsql/12/data

配置文件

上图可以看到,PostgreSQL的核心文件,都属于postgres用户,操作的时候,别用root用户,容易出问题,先切换到postgres用户再操作。

远程连接配置

PostgreSQL默认情况下不支持远程连接的,这个跟MySQL一样。

  • MySQL给mysql.user追加用户,一般是采用grant的命令添加;
  • PostgreSQL要基于配置文件修改,才能制定用户是否可以远程连接。

修改pg_hba.conf配置文件

用户以及对应数据库和连接方式的编写模板:

用户权限配置模板

1
2
3
4
5
6
7
8
9
10
11
12
# 第一块
local:代表本地连接,host代表可以指定连接的ADDRESS
# 第二块
database编写数据库名,如果写all,代表所有库都可以连接
# 第三块
user编写连接的用户,可以写all,代表所有用户
# 第四块
address代表那些IP地址可以连接
# 第五块
method加密方式,这块不用过多关注,使用md5即可
# 示例配置:允许任意地址的全部用户连接所有数据库
host all all 0.0.0.0/0 md5

pg_hba.conf示例配置

为了实现远程连接,除了用户级别的这种配置,还要针对服务级别修改一个配置

服务级别的配置在postgresql.conf

postgresql.conf原始配置

发现默认情况下,PostgreSQL只允许localhost连接,直接配置为*即可解决问题

postgresql.conf示例配置

为了生效,需要重启服务:

1
2
# 使用root用户重启
sudo systemctl restart postgresql-12

数据库的日志配置

查看postgresql.conf文件

postgresql.conf日志原始配置

PostgreSQL默认情况下,只保存7天的日志,循环覆盖。

1
2
3
4
5
6
7
8
9
10
11
12
# 代表日志是开启的。
logging_collector = on
# 日志存放的路径,默认放到当前目录下的log里
log_directory = 'log'
# 日志的文件名,默认是postgresql为前缀,星期作为后缀
log_filename = 'postgresql-%a.log'
# 默认一周过后,日志文件会被覆盖
log_truncate_on_rotation = on
# 一天一个日志文件
log_rotation_age = 1d
# 一个日志文件,没有大小限制
log_rotation_size = 0