以下是openEuler 2403系统下PostgreSQL 17的完整安装指南,包含详细步骤和关键配置:


一、环境准备

  1. 系统更新

    sudo dnf update -y
    sudo reboot  # 可选,确保内核更新生效
    

  2. 安装依赖

    sudo dnf install -y readline-devel zlib-devel \
    libicu-devel systemd-devel openssl-devel python3
    

  3. 创建专用用户

    sudo groupadd postgres
    sudo useradd -g postgres -m postgres
    sudo passwd postgres  # 设置密码
    


二、源码编译安装

  1. 下载源码

    wget https://ftp.postgresql.org/pub/source/v17.0/postgresql-17.0.tar.gz
    tar -zxvf postgresql-17.0.tar.gz
    cd postgresql-17.0
    

  2. 编译配置

    ./configure --prefix=/usr/local/pgsql17 \
                --with-systemd \
                --with-icu \
                --with-openssl
    

    • --with-systemd:支持systemd服务管理
    • --with-icu:启用国际化组件
  3. 编译与安装

    make -j$(nproc)  # 使用所有CPU核心加速编译
    sudo make install
    


三、配置环境变量

echo 'export PATH=/usr/local/pgsql17/bin:$PATH' | sudo tee /etc/profile.d/pgsql.sh
echo 'export PGDATA=/var/lib/pgsql/17/data' | sudo tee -a /etc/profile.d/pgsql.sh
source /etc/profile.d/pgsql.sh


四、初始化数据库

  1. 创建数据目录

    sudo mkdir -p $PGDATA
    sudo chown postgres:postgres $PGDATA
    

  2. 初始化DB

    sudo -iu postgres
    initdb -D $PGDATA --locale=C.UTF-8 --encoding=UTF8
    

    • --locale:设置默认区域
    • --encoding:指定数据库编码

五、配置文件调整

  1. postgresql.conf

    vi $PGDATA/postgresql.conf
    

    修改关键参数:

    listen_addresses = '*'       # 允许远程连接
    port = 5432                  # 默认端口
    max_connections = 100        # 最大连接数
    shared_buffers = 1GB         # 共享内存大小
    

  2. pg_hba.conf (访问控制)

    # 允许所有IP通过密码访问
    host    all             all             0.0.0.0/0               scram-sha-256
    


六、Systemd服务配置

  1. 创建服务文件

    sudo vi /etc/systemd/system/postgresql17.service
    

    内容:

    [Unit]
    Description=PostgreSQL 17 Database Server
    After=network.target
    
    [Service]
    Type=notify
    User=postgres
    Group=postgres
    Environment=PGDATA=/var/lib/pgsql/17/data
    ExecStart=/usr/local/pgsql17/bin/postgres -D ${PGDATA}
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    

  2. 启动服务

    sudo systemctl daemon-reload
    sudo systemctl enable --now postgresql17
    sudo systemctl status postgresql17  # 验证状态
    


七、防火墙配置

sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload


八、验证与基本操作

  1. 连接测试

    psql -U postgres -h 127.0.0.1 -d postgres
    

  2. 创建测试数据库

    CREATE DATABASE testdb;
    \c testdb
    CREATE TABLE demo (id SERIAL PRIMARY KEY, name VARCHAR(50));
    INSERT INTO demo (name) VALUES ('openEuler');
    SELECT * FROM demo;
    


九、常见问题处理

  • 启动失败:检查/var/lib/pgsql/17/data/log/*.log日志文件
  • 连接拒绝:确认pg_hba.conf中IP规则和postgresql.conflisten_addresses
  • 内存不足:调整shared_buffers(建议为系统内存的25%)

十、安全加固建议

  1. 修改默认账户密码

    ALTER USER postgres WITH PASSWORD 'StrongPassword!';
    

  2. 定期备份

    pg_dumpall -U postgres | gzip > /backups/pg_full_$(date +%F).sql.gz
    

  3. 启用日志审计
    postgresql.conf中增加:

    log_statement = 'all'        # 记录所有SQL
    log_connections = on         # 记录连接信息
    

通过以上步骤,PostgreSQL 17已在openEuler 2403上完成部署。后续可通过pgAdminpsql客户端进行管理。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐