环境规划:
- 操作系统:CentOS 7.9 64bit
- PostgreSQL 版本:16.x 或 15.x
- 安装用户:postgres
- 软件安装目标路径:/usr/pgsql-<version>
- 数据库数据目录:/pgdata
目录
(不推荐)二进制方式安装PostgreSQL软件
二进制安装方式为:PostgreSQL官方根据不同的Linux发行版本已经制作好对应的安装包,无需从源码编译。比较简单快捷,但对用户、目录、安装的组件等存在一定限制,不能按需安装。
不同的发行版本安装方式略有不同,参见:https://www.postgresql.org/download/
以RedHat/CentOS 7为例,官方安装步骤如下(需联网):
而二进制安装存在以下不足:
- 二进制安装方式,安装的目标目录默认为/usr/pgsql-<version>目录,难以改变或指定。
- 二进制安装方式,安装过程中自动创建的postgres用户的主目录不是/home。可能与环境部署规范要求冲突,不统一。
- 官方提供的步骤存在误导。对于二进制安装方式,某个操作系统发现版本只有指定的PostgreSQL版本,不是所有版本都有。例如,按如上官方说明步骤,在RedHat/CentOS 7上安装PostgreSQL 16,会报“No package postgresql16-server available”。因为官方的二进制版本对RedHat/CentOS 7最高只提供PostgreSQL 15,没有提供PostgreSQL 16版本。
- 官方步骤中使用的postgresql-<version>-setup脚本比较死,不能改变初始化数据库目录,因此不建议使用。建议使用标准的、可灵活定制的initdb脚本
因此,对以官方二进制步骤进行优化调整并增加注释如下。
1、安装PostgreSQL。需以可sudo的普通用户执行或者root用户执行(需要联网):
#增加yum的repository源
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
#自动从源下载,对RedHat/CentOS 7最高只提供PostgreSQL 15,没有提供PostgreSQL 16版本
#若报缺少依赖libzstd,则从CentOS安装盘或者网络查找对应rpm进行安装(例如:libzstd-1.5.5-1.el7.x86_64.rpm)
#会将PostgreSQL软件安装至/usr/pgsql-<version>目录,同时自动创建操作系统用户postgres
sudo yum install -y postgresql15-server
#以下均在此处均不执行
#由于postgresql-<version>-setup脚本比较死,不能改变初始化数据库目录,因此不建议使用。
#改为使用标准的可灵活定制的initdb脚本,并修改systemctl所用的脚步
#sudo /usr/pgsql-16/bin/postgresql-15-setup initdb
#sudo systemctl enable postgresql-15
#sudo systemctl start postgresql-15
2、对自动创建操作系统用户postgres修改密码(注意:二进制安装过程中自动创建的postgres用户的主目录不是/home)。以root用户执行:
passwd postgres
#按提示设置用户新口令
3、创建数据库数据存放目录并授权。以root用户执行:
mkdir -p /pgdata
chown -R postgres:postgres /pgdata<