一. PostgreSQL 简介
PostgrepSQL 是一种对象关系型数据库管理系统。
二. PostgreSQL 环境的安装和配置
2.1 源码的下载
PostgreSQL 14.0 源码可以从 PostgreSQL 官网:
源码目录内容,如下图所示:

2.2 环境配置
安装之前首先为系统配置环境,这个过程通过运行上图中的 configure 脚本文件即可 , 命令如下:
./configure
注意:安装的时候,遇到两个问题,新环境高频出现,可以通过最后一章中的方法进行解决。
2.3 编译
配置好环境变量之后,对源码进行编译。 2.1 图中,可以看到已经有完整的 makefile 文件,在目录下执行下面的命令,进行编译:
make clean all
编译过程大约持续 5~30min 。
2.4 回归测试
如果想在安装文件前测试新编译的服务器,那么可以在这个时候运行回归测试。回归测试是一个用于验证 PostgreSQL 在你的系统上是否按照开发人员设想的那样运行的测试套件。通过下面命令执行:
make check
如果执行结果如下,代表检查通过:

注意:这个命令只能在非特权用户下运行,不能在 root 权限下运行
2.5 安装、卸载、清理文件
( 1 )安装
安装 PostgreSQL ,需要输入下面的命令:
sudo make install
由于 install 命令需要在 root 权限下执行,所以需要按上面的命令执行。
( 2 )卸载
如果想要卸载安装,则执行下面的命令即可,需要注意此命令不会删除任何创建出来的目录:
sudo make uninstall
(3)清理
编译之前可以通过 make clean 命令,将之前的编译文件进行删除,避免对后续的编译产生影响。
2.6 安装后进行设置
2.6.1 创建用户
root 用户不能启动 postgresql ,所以需要创建一个普通用户来启动数据库,如下图所以,创建用户并设置登录口令。注意:下面两条命令均需在 root 权限下执行。
命令 1 : $sudo useradd postgres
没有其他输出,代表成功。
命令 2 : $sudo passwd postgres
输入类似于这样的密码,可以成功 ht3pki2008!!
如下图所示:

2.6.2 设定权限
在 postgresql 目录下创建目录 data (数据库存储)和 log (日志存储),然后将 postgresql 的目录权限全部赋予给 postgres 用户。
命令 1 : $sudo mkdir /usr/local/pgsql/data
命令 2 : $sudo mkdir /usr/local/pgsql/log
命令 3 : $sudo chown -R postgres:postgres /usr/local/pgsql
2.6.3 共享库
在一些有共享库的系统里,需要告知本地系统如何找到新安装的共享库。设置共享库的搜索路径的方法因平台而异,本机是 Linux 系统,因设置命令需要 root 权限,故在安装之后运行下面命令进行设置:
sudo /sbin/ldconfig /usr/local/pgsql/lib
设置后,可以在运行时,让链接器更快地找到共享库。
2.6.4 环境变量
1. 将 PG 添加到环境变量
本机 PG 安装路径为 /usr/local/pgsql ,安装到此目录或者其他默认不在搜索路径中的地方,应该在本地的 PATH 环境变量里面增加一个 /usr/local/pgsql/bin 。
上面的操作非必须,但可以在使用 PG 更方便。
将下面的几行加到 shell 启动文件即可,如: ~./bash_profile ()如果想影响所有用户就放在 /etc/profile ):
export PGDATA=/usr/local/pgsql/data
export PGHOME=/usr/local/pgsql
export PATH=$PGHOME/bin:$PATH
注意: /etc/profile 文件需要 root 权限操作,所以在修改的时候可以使用 sudo vim /etc/profile ,打开文件修改。
2. man 文档添加到环境变量
为了让系统找到 man 文档,将下面的内容添加到 shell 启动文件里:
MANPATH=/usr/local/pgsql/share/man:$MANPATH
export MANPATH
修改完成后,使用下面的命令使其生效:
命令 1 : sudo -s (切换到 root 权限)
命令 2 : source /etc/profile
2.6.5 初始化数据库
切换为 postgres 用户,使用 initdb --help 可以看到初始化数据库的帮助信息,如下图所示:
命令 1 : $initdb --help

图中红框中文字所示,由于之前在配置文件中已经设定了环境变量 PGDATA ,因此可以直接使用命令 initdb 来完成数据库初始化操作。
首先,切换到 postgres 用户,命令: #su - postgres
然后,初始化数据库,命令: $initdb
如果出现下面的结果,代表初始化成功:

此时,可以发现 /usr/local/pgsql/data 中已经有文件了,代表已经初始化成功。
2.6.6 配置数据库
首先,进入 /usr/local/pgsql/data 目录,使用命令 vim pg_hba.conf, 配置对数据库的访问控制(设置为可以通过密码访问)。如下图所示:

然后,使用命令 vim postgresql.conf, 配置数据库参数(设置服务器监听整个网络,设置端口号为 5432 )。如下图所示:

2.6.7 关闭防火墙( root 用户)
使用命令 systemctl status firewalld.service 查看防火墙状态,如图 13 所示:

通过上图可知,防火墙属于关闭状态。
如果查看到防火墙处于开启状态,如下图:

若想将其关闭,使用命令 sudo systemctl stop firewalld.service 关闭防火墙。( ps :使用命令 systemctl disable firewalld.service, 可以停用防火墙开机自启)
2.6.8 配置系统服务( root 用户)
进入 postgresql 源码包的解压目录(本文为 /home/10318001@zte.intra/Desktop/ 王泽辉的工作空间 /postgreSQL 源码 /postgresql-14.0 ),执行命令
cp contrib/start-scripts/linux /etc/init.d/postgresql
然后执行 vim /etc/init.d/postgresql ,查看配置信息是否如下图所示,若不同,请按下面的方式配置:

然后使用命令 chmod +x /etc/init.d/postgresql (需在 root 权限下执行),赋予该文件执行权限。另外,还可以使用命令 chkconfig --add postgresql (需在 root 权限下执行),设置服务开机自启。
2.6.9 启动及链接数据库
1. 启动数据库服务
使用命令 #service postgresql start (需要 root 权限) , 启动数据库服务。可以通过命令: $sudo ps -ef | grep postgres ,查看 postgres 相关进程,如下图所示:



3. 链接数据库
通过上述方法启动数据库后,便可通过 postgresql 自带的客户端工具 psql 来进行链接( psql 二进制文件在 /usr/local/pgsql/bin, 因为已经配置环境变量,所以全局也可执行)。
请按如下的步骤进行操作:
(1) 在 postgresql 用户下直接输入命令 :$psql ,看到版本信息则说明链接成功。
(2) 然后,使用” \password” , 设置密码。如下图所示:

(3) 验证非本地客户端工具的链接。
最后也是最重要的一步,就是验证非本地客户端工具的连接。本文选择的工具是 Navicat Premium, 在主机( Window10 )打开 Navicat 与虚拟机中的 postgresql 服务器进行连接测试,如下图所示:

(4) 停止数据库连接服务
若想停止数据库服务,可以在 root 权限下执行命令 :#service postgresql stop
总结:以上就是 linux 环境下源码编译安装 PostgreSQL 的全过程。
十. 错误及解决办法
10.1 安装 PG 时,执行 configure 脚本报错
问题一:
1. 安装前,执行 configure 配置文件时,报下面错误
configure: error: readline library not found If you have readline already installed, see config.log for details on the failure. It is possible the compiler isnt looking in the proper directory. Use --without-readline to disable readline support.
2. 解决办法
(1)根据提示是没有安装 readline 包,首先检查是否安装 readline 包

由上可知,系统中已经安装了 readline 包。
(2)通过 yum 查询 readline 包,观察都有哪些相关的包

由上可知, readline-devel.i686 和 readline-devel43.i386 可能未安装,尝试安装 readline-devel 包。
( 3 )尝试安装 readline-devel 包
注意,执行这个安装命令,需要在 root 权限下安装,用下面命令即可。

显示“完毕”之后,即代表安装完成。
(3)再次执行 configure 脚本,即可通过。
问题二:
1. 安装前执行 configure 脚本,报下面的错误
checking for inflate in -lz... no
configure: error: zlib library not found
If you have zlib already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-zlib to disable zlib support.
2. 解决办法
(1)首先检查系统中是否安装 zlib 包

(2)通过 yum 查看 zlib 包,查看哪些包缺失

通过上述查看可知, zlib-devel 需要安装。
(3)安装 zlib-devel
由于安装需要 root 权限,采用下面的命令安装即可,如下图:

( 4 )继续执行 configure 脚本,执行成功,问题得到解决。
转自:ht tp://t.zoukan kan.c om/coreLeo-p-15633054.ht ml
编辑推荐:
- 【PG数据库】PG数据库的安装及连接方法03-14
- PostgreSQL/LightDB- Tried to send an out-of-range integer as a 2-byte value03-14
- RockyLinux内核版本查看(新手必学:4种简单方法快速查询系统内核版本)03-14
- PostgreSQL/LightDB 分区表之分区裁剪03-14
- PostgreSQL/Lightdb 更改列属性语法03-14
- ShardingSphere-proxy +PostgreSQL实现读写分离(静态策略)03-14
- LightDB/PostgreSQL 客户端部署03-14
- RockyLinux NFS服务器配置指南(手把手教你搭建NFS共享存储服务)03-14
