程序员的知识教程库

网站首页 > 教程分享 正文

centos 7.6 离线安装postgresql 17

henian88 2025-04-27 13:50:12 教程分享 10 ℃ 0 评论

因为部署的服务器无法访问网络,所以需要源码编译安装 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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表