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

举报
Copy工程师 发表于 2022/01/17 20:16:02 2022/01/17
【摘要】 前言最近被安排做一些安全加固的事情,被分到了几个关于postgresql数据库的问题。关于pg库,我们应该都很熟悉了,项目中经常用到,原先以为下个包就可以直接部署了(当然官网也提供了桌面化安装程序),但是我没有安装linux的桌面化组件,所以只能自己编译安装了。。。。。 准备材料以为服务器是内网服务器,不能配置yum,也连接不了外网,只能自己离线安装了,安装前需要准备的软件或者rpm包:p...

前言

最近被安排做一些安全加固的事情,被分到了几个关于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目录下
    image.png

  2. 安装rpm包,检查是否安装正确
    rpm -qa | grep -E 'zlib|readline|ncurses'
    image.png

  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
    这表示所有数据库的所有用户都可以无密码登录,至于怎么设置这个权限问题,自己设计即可。
    image.png

在配置一下监听地址和端口,执行`vi /usr/local/postgresql/data/postgresql.conf `
`listen_addresses = '*'`
`port = 5432`
表示端口5432,监听所有地址
然后就可以启动数据库了
  1. 启动数据库
    /home/pgsql/bin/pg_ctl -D /home/pgsql/data -l logfile start 就可以了
  2. 客户端执行sql文件
    pg库提供了客户端的交互方式,执行/bin/psql文件,psql还提供了可以直接执行sql文件,如果是无密码登录的,可以直接使用
    ./psql -d postgres -f /opt/initdb.sql
    如果是密码登录,则可以使用
    PGPASSWORD=密码 psql -d postgres -f /opt/initdb.sql
    (前提是把bin目录 导入环境变量)
    这样就可以做一些自动化脚本使用了。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。