温馨提示×

PostgreSQL在CentOS上的配置方法

小樊
62
2025-10-05 07:11:40
栏目: 云计算

1. 更新系统包
在开始安装前,确保系统包是最新的,以避免依赖冲突:

sudo yum update -y

2. 安装PostgreSQL官方YUM仓库(可选但推荐)
若需安装最新版本的PostgreSQL(如15.x),建议先添加官方YUM仓库(以CentOS 7为例,其他版本需调整URL):

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

若安装过程中提示缺少libzstd等依赖,可手动下载对应版本的RPM包安装(如CentOS 7需下载libzstd-1.5.5-1.el7.x86_64.rpm)。

3. 安装PostgreSQL服务器及扩展工具
通过YUM安装PostgreSQL服务器(postgresql-server)和常用扩展(postgresql-contrib,包含额外工具如pgbenchpg_dump等):

sudo yum install -y postgresql15-server postgresql15-contrib  # 以PostgreSQL 15为例

4. 初始化数据库集群
使用官方提供的脚本初始化数据库(路径随版本变化,如PostgreSQL 15为/usr/pgsql-15/bin/postgresql-15-setup):

sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

初始化完成后,数据库数据目录默认位于/var/lib/pgsql/15/data

5. 启动PostgreSQL服务并设置开机自启
启动服务并配置为开机自动启动:

sudo systemctl start postgresql-15  # 服务名格式为postgresql-版本号
sudo systemctl enable postgresql-15

通过systemctl status postgresql-15可查看服务状态。

6. 配置PostgreSQL核心参数

  • 修改postgresql.conf(调整服务行为)
    编辑配置文件(路径如/var/lib/pgsql/15/data/postgresql.conf),关键参数调整如下:
    listen_addresses = '*'  # 允许所有IP连接(远程访问需开启)
    port = 5432             # 默认端口,可根据需求修改
    max_connections = 100   # 最大连接数(根据服务器资源调整)
    shared_buffers = 25%    # 共享缓冲区大小(建议为系统内存的25%)
    work_mem = 64MB         # 单个查询的工作内存
    maintenance_work_mem = 256MB  # 维护操作(如VACUUM)的内存
    effective_cache_size = 768MB  # 操作系统缓存的有效大小(建议为物理内存的50%)
    
  • 修改pg_hba.conf(控制访问权限)
    编辑认证文件(路径如/var/lib/pgsql/15/data/pg_hba.conf),添加以下行允许远程连接(MD5密码认证):
    host all all 0.0.0.0/0 md5  # 允许所有IP访问所有数据库
    host all all ::/0 md5       # 允许IPv6连接(可选)
    

7. 重启服务应用配置
修改配置文件后,需重启服务使更改生效:

sudo systemctl restart postgresql-15

8. 强化PostgreSQL安全

  • 设置postgres用户密码
    切换至postgres用户,进入psql命令行修改密码:
    sudo -u postgres psql
    ALTER USER postgres PASSWORD 'your_secure_password';  # 替换为强密码
    \q  # 退出psql
    
  • 配置防火墙
    若系统启用firewalld,需开放PostgreSQL端口(默认5432):
    sudo firewall-cmd --permanent --add-service=postgresql  # 或指定端口:--add-port=5432/tcp
    sudo firewall-cmd --reload
    

9. 创建数据库和用户(可选)

  • 创建超级用户
    通过postgres用户创建具有管理权限的角色:
    sudo -u postgres psql
    CREATE ROLE admin WITH LOGIN PASSWORD 'admin_password' SUPERUSER CREATEDB CREATEROLE;
    \q
    
  • 创建普通数据库及用户
    为应用创建专用数据库和用户(推荐最小权限原则):
    sudo -u postgres psql
    CREATE DATABASE myappdb;
    CREATE USER myappuser WITH PASSWORD 'myapppassword';
    GRANT ALL PRIVILEGES ON DATABASE myappdb TO myappuser;
    \q
    

10. 测试远程连接(可选)
若需从远程机器连接,可使用psql客户端验证:

psql -h <CentOS服务器IP> -U admin -d myappdb

输入密码后,若出现myappdb=>提示符则连接成功。

0