网站首页 > 教程分享 正文
因为部署的服务器无法访问网络,所以需要源码编译安装 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
猜你喜欢
- 2025-04-27 一文搞懂PostgreSQL中VACUUM 与 VACUUM FULL
- 2025-04-27 PostgreSQL常用索引
- 2025-04-27 PostgreSQL权限管理指南:创建、管理用户和授予权限的完全教程!
- 2025-04-27 理解PostgreSQL的模式、表、空间、用户间的关系
- 2025-04-27 学会在PostgreSQL中创建和管理表格的关键步骤
- 2025-04-27 PostgreSQL安装与配置,在CentOS7.9平台安装PostgreSQL12.22
- 2025-04-27 AI编程之手把手教你在CentOS安装Postgresql的Vector向量数据库
- 2025-04-27 掌握查询优化的关键技巧:深入解析 PostgreSQL 中的 EXPLAIN 命令
- 2025-04-27 PostgreSQL 自动输入密码
- 2025-04-27 PostgreSQL ODBC安装和使用
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)