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

创建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

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

设置开机启动
编辑 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. ubuntu 安装postgresql16.0

    2024-07-18 11:14:06       24 阅读
  2. ubuntu18安装postgresql15.2数据库

    2024-07-18 11:14:06       37 阅读
  3. ubuntu安装nginx

    2024-07-18 11:14:06       36 阅读
  4. PostgreSQL16.3基于CentOS7.9安装步骤

    2024-07-18 11:14:06       25 阅读
  5. ubuntu postgresql 安装

    2024-07-18 11:14:06       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 11:14:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 11:14:06       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 11:14:06       58 阅读
  4. Python语言-面向对象

    2024-07-18 11:14:06       69 阅读

热门阅读

  1. 【Tomcat9正确配置server.xml请求头信息】

    2024-07-18 11:14:06       19 阅读
  2. MYSQL设计索引一般需要考虑哪些因素?

    2024-07-18 11:14:06       22 阅读
  3. 华为OD机考题(典型题回顾)

    2024-07-18 11:14:06       19 阅读
  4. 手写实现简单Redis命令客户端功能

    2024-07-18 11:14:06       17 阅读
  5. Leetcode 238. 除自身以外数组的乘积

    2024-07-18 11:14:06       23 阅读
  6. qt listview 列表文字显示不全,如何用悬浮显示?

    2024-07-18 11:14:06       17 阅读
  7. PF4J+SpringBoot

    2024-07-18 11:14:06       19 阅读
  8. CAS的原理

    2024-07-18 11:14:06       25 阅读
  9. P5717 【深基3.习8】三角形分类

    2024-07-18 11:14:06       21 阅读
  10. 【数据平台-dataworks】-问题总结

    2024-07-18 11:14:06       22 阅读
  11. spring中的依赖注入

    2024-07-18 11:14:06       20 阅读
  12. 力扣212题:单词搜索 II

    2024-07-18 11:14:06       21 阅读