ubuntu 源码安装postgresql16.0

  • 使用 root 账户进行安装
  • 安装路径:/opt/pgsql16 手动创建
  • 数据存储路径:/data/pgsql16/data 手动创建
  • 数据库配置文件 /data/pgsql16/data/postgresql.conf 会自动生成

开始安装
刷新本地包索引、安装相关依赖

apt-get update -y
apt-get upgrade -y
apt-get install make -y
apt-get install build-essential -y
apt-get install libreadline-dev -y
apt-get install zlib1g zlib1g-dev -y
apt-get install bison -y
apt-get install flex -y
apt-get install libpq-dev -y
apt-get install libicu-dev -y
apt-get install libcommon-sense-perl -y
apt-get install libjson-perl -y
apt-get install libjson-xs-perl -y
apt-get install libpq5 -y
apt-get install libtypes-serialiser-perl -y
apt-get install sysstat` -y

下载源码并解压(安装完之后可以删除的,以防后期混淆)

cd /
wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz
tar -zxvf postgresql-16.0.tar.gz 
# 进入解压目录
cd postgresql-16.0

创建安装路径和数据存储路径(配置文件也在这个里面)

mkdir -p  /opt/pgsql16  /data/pgsql16/data

配置编译参数,并进行编译,验证是否安装成功
–prefix 指定安装路径
–without-icu 禁用ICU 支持

./configure --prefix=/opt/pgsql16 --without-icu

#编译 (持续时间较长)
make 
make install

#验证是否安装成功 (有配置内容则成功了)
./opt/pgsql16/bin/pg_config
#如果提示这个没见不存在就cd /opt/pgsql16/bin 然后执行 ./pg_config

创建postgres用户与用户组 修改文件所有者

groupadd postgres
useradd -g postgres postgres
passwd postgres  # 后面输入密码,这里不是数据库密码
chown postgres:postgres /data/pgsql16/data

mkdir /home/postgres
chmod 755 /home/postgres
chown postgres:postgres /home/postgres
cp -a /etc/skel/. /home/postgres
vim /etc/passwd
# 最后一行为postgres:x:xxxx:xxxx::/home/postgres:/bin/sh 将sh 修改成bash
#postgres:x:xxxx:xxxx::/home/postgres:/bin/bash

配置环境变量
vim /etc/profile 最后添加如下

export PGHOME=/opt/pgsql16
export PGDATA=/data/pgsql16/data
export PATH=$PATH:$PGHOME/bin

重新加载系统环境变量

source /etc/profile

切换用户 初始化数据库

su - postgres
cd /data/pgsql16/data
# initdb 直接输入回车就行了
initdb -D /data/pgsql16/data

出现下面内容表示成功
Success. You can now start the database server using:
pg_ctl -D /data/pgsql16/data -l logfile start

设置开机启动 切换到 root用户

su root

编辑 vim /postgresql-16.0/contrib/start-scripts/linux 文件,修改如下(文件在解压后的源码包里)。

# 安装路径
prefix=/opt/pgsql16
# 数据存储路径
PGDATA="/data/pgsql16/data"

并且修改文件头部 为 #! /bin/bash 并且添加下列代码不要取消注释BEGIN 部分也得加上不然启动会报错

#! /bin/bash

### BEGIN INIT INFO
# Provides:          hutu
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start hutu daemon at boot time
# Description:       Start hutu daemon at boot time
### END INIT INFO

修改成可执行

chmod a+x /postgresql-16.0/contrib/start-scripts/linux

复制到 /etc/init.d/、/usr/local/bin/ 文件夹下去,并且改成postgresql

cp /postgresql-16.0/contrib/start-scripts/linux /etc/init.d/postgresql
cp /postgresql-16.0/contrib/start-scripts/linux /usr/local/bin/postgresql
chmod +x /usr/local/bin/postgresql

创建system服务
vim /etc/systemd/system/postgresql.service

[Unit]
Description=PostgreSQL RDBMS
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
ExecStart=/opt/pgsql16//bin/pg_ctl start -D /data/pgsql16/data/ -s -o "-p 5432"
ExecStop=/opt/pgsql16//bin/pg_ctl stop -D /data/pgsql16/data/ -s -m fast
ExecReload=/opt/pgsql16//bin/pg_ctl reload -D /data/pgsql16/data/-s

[Install]
WantedBy=multi-user.target

刷新系统服务,设置开机启动,启动服务

systemctl daemon-reload
systemctl enable postgresql.service
systemctl start postgresql
systemctl status postgresql

修改配置文件 /data/pgsql16/data/postgresql.conf 允许远程访问

listen_addresses 这个值改成 * 
其他配置配置另行百度

修改配置文件 /data/pgsql16/data/pg_hba.conf 最后一行添加如下

host    all             all             0.0.0.0/0               md5

重启服务

systemctl restart postgresql

修改数据库的postgres账户密码,放开防火墙

su - postgres
# 登录数据库(上方 /data/pgsql16/data/pg_hba.conf 
# 文件默认有 host    all   all    127.0.0.1/32    trust 这个 其中 trust 表示不需要密码登录)
psql
# 修改密码 
alter user postgres with password '你的密码';
exit 
su root
#放开防火墙
ufw allow 5432

删除安装包和源码,以防后期混淆

rm -rf /postgresql-16.0.tar.gz
rm -rf /postgresql-16.0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值