网站首页 > 精选文章 / 正文
因为部署的服务器无法访问网络,所以需要源码编译安装 PostgreSQL。
本文详细记录了在 CentOS 7.6 上源码编译安装 PostgreSQL 17 的完整过程。需要准备2台相同版本的服务器 1台可以联网的 1台内网.
系统版本:centos 7.6
postgresql版本:17.4 下载地址:
https://mirrors.tuna.tsinghua.edu.cn/postgresql/source/v17.4/postgresql-17.4.tar.gz
pgadmin 下载地址:
https://mirrors.tuna.tsinghua.edu.cn/postgresql/pgadmin/pgadmin4/v9.2/windows/
获取必要的依赖:
在可以联网的服务器上
sh 复制代码
## 创建目录
mkdir ~/offline-packages17
#导出依赖包到指定目录~/offline-packages17
yumdownloader --resolve --destdir ~/offline-packages17 gcc make readline-devel zlib-devel openssl-devel libxml2-devel pam-devel libicu-devel bison flex perl
``` sh
压缩依赖包/home/offline-packages17 并下载到内网服务器
``` sh
tar -zcvf offline-packages17.tar.gz /home/offline-packages17
准备工作
- 创建用户和组:
sh 复制代码
sudo groupadd postgres
sudo useradd -g postgres postgres
- 将文件offline-packages17.tar.gz 上传到内网服务器并解压
sh 复制代码
tar -xzvf offline_packages17.tar.gz ~/offline_packages17
- 安装依赖
sh 复制代码
rpm -Uvh *.rpm --nodeps --force
- 上传postgresql-17.4.tar.gz到目录~/offline-packages17 并解压
复制代码
tar -xzvf postgresql-17.4.tar.gz
编译与安装
- 配置检测
sh 复制代码
#切换目录
cd postgresql-17.4
#开始编译
./configure --prefix=/usr/local/pgsql17 --with-pam --enable-nls --with-pgport=5432 --with-openssl --with-libxml
- 编译
sh 复制代码
make
若是make失败看看缺失了什么就在可以联网的服务器上导出依赖
- 安装
sh 复制代码
sudo make install
这时安装的目录在/usr/local/pgsql17
数据库初始化和启动
- 创建数据存储目录
sh 复制代码
sudo mkdir /usr/local/pgsql17/data
#授权数据权限给 postgres
sudo chown postgres:postgres /usr/local/pgsql17/data
- 初始化数据库
sh 复制代码
# 设置合适的 locale,例如 zh_CN.UTF-8
sudo -u postgres /usr/local/pgsql17/bin/initdb -D /usr/local/pgsql17/data --locale=en_US.UTF-8
若是提示无权限什么的,最暴力的方式是授权postgres的目录 pgsql17 sudo chown -R postgres:postgres /usr/local/pgsql17
- 创建 systemd 服务文件
创建/etc/systemd/system/postgresql-17.service文件,并添加以下内容(注意替换路径):
sh 复制代码
[Unit]
Description=PostgreSQL 17 database server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
ExecStart=/usr/local/pgsql17/bin/pg_ctl start -D /usr/local/pgsql17/data
ExecStop=/usr/local/pgsql17/bin/pg_ctl stop -D /usr/local/pgsql17/data -m fast
ExecReload=/usr/local/pgsql17/bin/pg_ctl reload -D /usr/local/pgsql17/data
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=300
[Install]
WantedBy=multi-user.target
- 启动
sh 复制代码
#重新加载 systemd 配置:
sudo systemctl daemon-reload
#启动
sudo systemctl start postgresql-17
#设置开启启动
sudo systemctl enable postgresql-17
-配置环境变量
复制代码
vi /home/postgres/.bash_profile
添加/usr/local/pgsql17/bin
刷新配置
复制代码
source /home/postgres/.bash_profile
#测试
su postgres
psql -c "SELECT version();"
配置远程访问
- 修改 postgresql.conf:
sh 复制代码
vi /usr/local/pgsql17/data/postgresql.conf
找到listen_addresses,修改为:
sh 复制代码
listen_addresses = '*' # 监听所有接口
- 修改 pg_hba.conf
sh 复制代码
vi /usr/local/pgsql17/data/pg_hba.conf
在文件末尾添加以下行,允许某些ip访问,这里直接设置所有ip允许
sh 复制代码
host all all 0.0.0.0/0 trust
重启 PostgreSQL 服务:
sh 复制代码
systemctl restart postgresql-17
防火墙设置
sh 复制代码
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload
验证安装
sh 复制代码
sudo -u postgres /usr/local/pgsql17/bin/psql -c "SELECT version();"
创建用户和数据库
复制代码
sudo -u postgres /usr/local/pgsql17/bin/psql
CREATE USER your_username WITH PASSWORD 'your_strong_password'; -- 创建用户并设置密码
CREATE DATABASE your_database; -- 创建数据库
GRANT ALL PRIVILEGES ON DATABASE your_database TO your_username; -- 授予权限
修改postgres 密码
首先,使用psql工具连接到PostgreSQL服务器:
sh 复制代码
sudo -u postgres psql
然后,使用以下命令修改密码
复制代码
ALTER USER postgres WITH PASSWORD 'newpassword';
最后,退出psql客户端:
复制代码
\q 或exit
Tags:centos rz sz 安装
猜你喜欢
- 2025-05-28 centos安装
- 2025-05-28 学习笔记-CentOS 7.9 - 安装部署
- 2025-05-28 VMware Workstation Pro安装CentOS7(一)
- 2025-05-28 美国VPS服务器如何安装CentOS系统?
- 2025-05-28 CentOS 8.2安装NVIDIA 网卡驱动
- 2025-05-28 VMware Workstation Pro安装CentOS7(二)
- 2025-05-28 使用虚拟机在3台centos7系统安装docker和k8s集群
- 2025-05-28 Windows上安装CentOS系统:轻松实现跨平台操作
- 2025-05-28 Centos7 Yum安装MYSQL8.0详细安装步骤
- 2025-05-28 zabbix6.0 LTS 保姆级安装教程