内容概述

  1. 环境准备

  2. 解压并配置编译参数

  3. 编译安装

  4. 创建用户

  5. 启动数据库

  6. 添加自启

1. 环境准备

1.1 软件包的获取

https://www.postgresql.org/ftp/source/

1.2 安装依赖

apt update
apt install -y build-essential libreadline-dev zlib1g-dev flex bison libssl-dev

2. 解压并配置编译参数

## 解压
tar -xvzf postgresql-15.6.tar.gz
## 创建软连接
mv postgresql-15.6 /usr/bin/
ln  -s /usr/bin/postgresql-15.6/  /usr/bin/postgresql

## 创建数据目录
mkdir -p /data/postgres

## 编译
cd /usr/bin/postgresql
./configure --prefix=/usr/bin/postgresql

##--prefix 指定了安装路径

3. 编译安装

make -j$(nproc)
make install

4. 创建用户

PostgreSQL不允许root用户来下运行数据库,因此我们需要创建一个新的用户来运行

## 创建用户
useradd -m -s /bin/bash postgres
## 授权
vim /etc/sudoers
root    ALL=(ALL:ALL) ALL
postgres ALL=(ALL:ALL) ALL

## 移除postgres密码 (可选)
passwd -d postgres 

将postgresql的安装目录和数据目录都设为该用户

sudo mkdir -p  /data/5432
sudo chown -R postgres:postgres /data/5432

5. 启动数据库

## 切换用户
su - postgres

## 添加环境变量
vim ~/.bashrc
export PATH=/usr/bin/postgresql/bin/:$PATH
export PGDATA=/data/5432
source ~/.bashrc

##初始化数据库
initdb -D /data/5432/

## 启动数据库
pg_ctl -D /data/5432/ -l logfile start

报错:

psql: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory

解决:

添加环境变量

export LD_LIBRARY_PATH=/usr/bin/postgresql/lib:$LD_LIBRARY_PATH

source ~/.bashrc

6. 添加自启

cat  /usr/lib/systemd/system/postgresql.service 
[Unit]
Description=PostgreSQL 15.6 Database Server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
ExecStart=/usr/bin/postgresql/bin/pg_ctl -D /data/5432 -l /data/5432/logfile start
ExecStop=/usr/bin/postgresql/bin/pg_ctl -D /data/5432 -m fast stop
ExecReload=/usr/bin/postgresql/bin/pg_ctl -D /data/5432 reload
TimeoutSec=300
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target