【数据库】PostgreSQL编译安装详细过程

本文详细介绍了在无法访问外网的CentOS7系统上,如何离线编译安装PostgreSQL 10.14的过程。首先,需要准备相关rpm包和源码,然后进行解压、配置、编译和安装。在安装过程中,创建用户和组,初始化数据库,并配置访问权限。最后,启动数据库并使用客户端执行SQL文件。此过程对于没有桌面化环境的Linux服务器非常实用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近被安排做一些安全加固的事情,被分到了几个关于postgresql数据库的问题。关于pg库,我们应该都很熟悉了,项目中经常用到,原先以为下个包就可以直接部署了(当然官网也提供了桌面化安装程序),但是我没有安装linux的桌面化组件,所以只能自己编译安装了。。。。。

准备材料

以为服务器是内网服务器,不能配置yum,也连接不了外网,只能自己离线安装了,安装前需要准备的软件或者rpm包:

  1. postgresql-10.14.tar.gz
  2. readline-devel-6.2-11.el7.x86_64.rpm
  3. zlib-1.2.7-18.el7.x86_64.rpm
  4. zlib-devel-1.2.7-18.el7.x86_64.rpm
  5. ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm

这里我用的是CentOS7的64位系统,如果你是其他系统可以根据这个网址去下载对应的离线包:https://pkgs.org/search, 如果支撑访问外网可以直接使用yum安装,更加方便。

如果不安装这几个包,编译pg的时候会报,缺少readline包等问题。

编译安装

  1. 上传源码包和rpm包到home目录下在这里插入图片描述

  2. 安装rpm包,检查是否安装正确
    rpm -qa | grep -E 'zlib|readline|ncurses'
    在这里插入图片描述

  3. 解压pg源码包
    tar -zxvf postgresql-10.14.tar.gz

  4. 创建安装目录,执行configure 进行平台检测

    mkdir pgsql
    cd postgresql-10.14 
    ./configure --prefix=/home/pgsql
    

    没有报错则继续往下走

  5. 执行make编译
    使用make world编译
    pg库有很多扩展组件,如果只执行make pg编译会排除这些扩展插件,所以需要使用 make world 包含扩展插件
    当出现PostgreSQL, contrib, and documentation successfully made. Ready to install. 表示编译成功了。

  6. 安装
    同样安装也是,执行make install-world 会把扩展插件安装上的。
    出现PostgreSQL, contrib, and documentation installation complete.表示安装成功

  7. 添加用户,用户组
    useradd postgres
    groupadd postgres

  8. 生成数据库文件
    mkdir /home/pgsql/data

  9. 权限变更
    chown postgres /home/pgsql/data
    chgrp postgres /home/pgsql/data

  10. 数据库初始化
    su - postgres
    /home/pgsql/bin/initdb -D /home/pgsql/data

    这种初始化默认是trust模式,超级账户的密码为空,当然你也可以等初始化完数据库,后面在修改密码,但是如果想在初始化的时候就设置好密码,并修改pg_hba的校验方式,可以使用
    initdb -A scram-sha-256 --pwfile /opt/pwd.txt
    -A设置校验方式,–pwfile 指定密码文件,注意密码文件第一行写密码

    执行成功会出现
    Success. You can now start the database server using:
    /home/pgsql/bin/pg_ctl -D /home/pgsql/data -l logfile start

  11. 配置数据库允许访问的IP,设置监听地址和端口
    vi /home/pgsql/data/pg_hba.conf
    追加一条记录:
    host all all 0.0.0.0/0 trust
    这表示所有数据库的所有用户都可以无密码登录,至于怎么设置这个权限问题,自己设计即可。
    在这里插入图片描述
    在配置一下监听地址和端口,执行vi /usr/local/postgresql/data/postgresql.conf
    listen_addresses = '*'
    port = 5432
    表示端口5432,监听所有地址
    然后就可以启动数据库了

  12. 启动数据库
    /home/pgsql/bin/pg_ctl -D /home/pgsql/data -l logfile start 就可以了

  13. 客户端执行sql文件
    pg库提供了客户端的交互方式,执行/bin/psql文件,psql还提供了可以直接执行sql文件,如果是无密码登录的,可以直接使用
    ./psql -d postgres -f /opt/initdb.sql
    如果是密码登录,则可以使用
    PGPASSWORD=密码 psql -d postgres -f /opt/initdb.sql
    (前提是把bin目录 导入环境变量)
    这样就可以做一些自动化脚本使用了。

### PostgreSQL 编译安装教程 #### 准备环境 创建新用户,PostgreSQL 不允许使用 root 用户运行服务,因此需要创建一个专门用于管理 PostgreSQL 服务的新用户。此用户的名称通常设置为 `postgres`。 ```bash groupadd postgres useradd -g postgres postgres ``` #### 下载源码 访问官方提供的下载页面获取最新版本的 PostgreSQL 源码压缩包[^2]: - 访问链接:https://ftp.postgresql.org/pub/source/ 选择合适的版本号后下载对应的 tarball 文件至本地服务器并解压。 #### 安装依赖项 由于较老的操作系统可能缺乏必要的构建工具或库文件,在正式编译之前应当确认已安装所有必需的支持软件包。这一步骤对于顺利完成后续工作至关重要[^3]。 具体命令如下所示(适用于基于 Red Hat 的发行版): ```bash yum install gcc make flex bison libxml2-devel openssl-devel pam-devel perl-devel python3-devel tcl-devel readline-devel zlib-devel ``` 而对于 Debian 类系统则应执行: ```bash apt-get update && apt-essential libreadline-dev zlib1g-dev flex bison libxml2-dev libxslt-dev libssl-dev uuid-dev ``` #### 配置与编译 切换到刚才创建好的 `postgres` 用户身份来继续操作,并进入解压后的目录内完成配置脚本调用以及实际编译流程。 ```bash su - postgres ./configure --prefix=/usr/local/pgsql --with-perl --with-openssl make world ``` 上述指令中的选项可以根据个人需求调整;其中 `--prefix` 参数指定了最终程序文件存放路径。 #### 测试与部署 为了验证刚刚制作出来的可执行文件能否正常运作,可以尝试运行测试套件。 ```bash make check ``` 如果一切顺利的话就可以着手处理真正的安装事宜了。 ```bash make install ``` 此时即完成了整个编译安装备份的过程[^4]。 #### 初始化数据存储空间 最后还需要初始化一个新的集群以便于日后正常使用关系型数据库管理系统所提供的各项功能特性。 ```bash /usr/local/pgsql/bin/initdb -D /home/postgres/data/ ``` 以上就是完整的 PostgreSQL 编译安装指南[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值