当前位置: 首页 > news >正文

Linux系统安装Postgre和Postgis教程

卸载

如果之前没装过可以忽略这一步

卸载前记得备份数据库数据(如果还需要的话)!!!

一、删除 Docker 安装的 PostgreSQL/PostGIS

1. 停止并删除容器
# 查看所有容器
docker ps -a | grep postgres

# 停止并删除容器(替换为实际容器名或ID)
docker stop <容器名或ID> && docker rm <容器名或ID>
2. 删除镜像和数据卷
# 删除镜像
docker images | grep postgres
docker rmi <镜像名或ID>

# 删除数据卷(谨慎操作,会永久删除数据!)
docker volume ls | grep postgres
docker volume rm <卷名>
3. 清理残留文件
# 检查 Docker 数据目录
sudo rm -rf /var/lib/docker/volumes/*postgres*

二、删除 Yum/RPM 安装的 PostgreSQL/PostGIS

1. 卸载所有相关包
# 列出所有已安装的 PostgreSQL/PostGIS 包
sudo yum list installed | grep -E 'postgresql|postgis'

# 卸载主包和依赖(示例,实际包名可能不同)
sudo yum remove postgresql13-server postgresql13-contrib postgis30_13
2. 删除配置和数据文件
# 删除数据目录(默认路径)
sudo rm -rf /var/lib/pgsql/

# 删除配置文件
sudo rm -rf /etc/postgresql-13/

# 删除日志文件
sudo rm -rf /var/log/postgresql/
3. 清理用户和组
sudo userdel -r postgres
sudo groupdel postgres

三、删除源码编译安装的 PostgreSQL/PostGIS

1. 停止服务并删除安装目录
# 停止服务(如果已配置服务)
sudo systemctl stop postgresql
sudo rm -f /etc/systemd/system/postgresql.service

# 删除源码安装目录(根据实际路径)
sudo rm -rf /usr/local/pgsql/
2. 删除数据目录和日志
sudo rm -rf /usr/local/pgsql/data/
sudo rm -rf /var/log/postgresql/
3. 清理环境变量

编辑以下文件,移除 PostgreSQL 相关路径:

sudo nano ~/.bashrc  # 或 /etc/profile
# 删除类似以下内容
export PATH=/usr/local/pgsql/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH

四、通用清理步骤

1. 检查残留进程
pgrep -a postgres  # 如有残留进程,手动终止
sudo pkill -9 postgres
2. 清理临时文件
sudo rm -rf /tmp/.s.PGSQL*
3. 刷新动态链接库缓存
sudo ldconfig

五、验证是否删除干净

# 检查命令是否存在
which psql          # 应无输出
psql --version      # 应提示未找到命令

# 检查目录残留
ls -l /usr/local/pgsql  # 应提示目录不存在

# 检查用户/组
id postgres         # 应提示用户不存在

六、备份提醒

在执行删除操作前,务必备份数据

# 如果数据库仍可访问
pg_dumpall > full_backup.sql

安装

一、yum在线直接安装(环境支持的话推荐这种)

# 查看可用的 postgreSQl 版本
yum list available postgre*

# 安装postgre13
yum install postgreSql13 -y

#查看可用postgis版本
yum list available postgis*

#安装postgis30_13

yum install postgis30_13 -y

注意:postgis版本需要与postgresql对应,比如此处30_13,代表我的postgis插件版本是3.0,适配的postgresql版本是13

二、离线安装postgresql

官网资源包下载地址:PostgreSQL: File Browser

1、安装前的准备

1.1安装依赖
1.1.1安装编译工具
yum install -y gcc gcc-c++

这个命令安装了 GNU编译器集合(gcc)和 GNU C++ 编译器(gcc-c++)。这些是编译 PostgreSQL 源代码所必需的。

1.1.2安装 readline 开发库
yum install -y readline-devel

readline-devel 包提供了额外的头文件和库,用于开发与 readline 库兼容的程序。readline 是一个库,用于提供命令行编辑和历史功能,PostgreSQL 需要这个库来支持其命令行工具。

1.1.3 安装 zlib 开发库
yum install -y zlib-devel

zlib-devel 包包含了 zlib 压缩库的开发文件,包括头文件和用于链接的库文件。PostgreSQL 使用 zlib 来进行数据压缩。

1.2 创建postgres用户与用户组
#创建postgres用户组
groupadd postgres

#创建postgres用户,并添加到postgres用户组
useradd postgres -r -g  postgres

 

  • useradd postgres:创建一个名为postgres的新用户。
  • -r:指定创建的是一个系统账户。系统账户通常用于运行系统服务,而不是普通用户登录。
  • -g postgres:指定用户的主组为postgres。如果该组不存在,则会创建一个同名的组。

2 开始安装

从官网下载压缩包以后,上传到Linux系统某个文件夹下

# 使用如下命令解压
tar -zxvf postgresql-14.4.tar.gz 

# 进入解压后的目录

cd postgresql-14.4

#开始安装

./configure 

make

make install

3 创建存放postgresql数据的目录,初始化数据库并启动

3.1 创建数据目录
mkdir /usr/pgsql-13/data
3.2 创建日志目录
/usr/pgsql-13/log
3.3 修改数据、日志目录的所属用户与用户组均为postgres
chown -R postgres:postgres /usr/pgsql-13/data

chown -R postgres:postgres /usr/pgsql-13/log
3.4 初始化数据库

1 切换到postgres用户

su postgres

2 初始化数据库

/usr/pgsql-13/bin/initdb -D /usr/pgsql-13/data

命令解释

/usr/pgsql-13/bin/initdb -D /usr/pgsql-13/data是一个用于初始化 PostgreSQL 数据库集群的命令。

命令参数

/usr/pgsql-13/bin/initdb: 这是initdb命令的路径,initdb是 PostgreSQL 提供的一个用于创建新的数据库集群的工具。
-D /usr/pgsql-13/data: -D参数指定了数据库集群的数据目录,即/usr/pgsql-13/data。这个目录将存储所有数据库文件。

3.5 启动数据库,并将日志打印到pg.log文件上
/usr/pgsql-13/bin/pg_ctl -D /usr/pgsql-13/data -l /usr/pgsql-13/log/pg.log start

 

命令解释

该命令用于启动PostgreSQL数据库服务器。

命令参数解释

-D /usr/pgsql-13/data: 指定PostgreSQL数据目录的路径。这是数据库文件存储的地方。
-l /usr/pgsql-13/log/pg.log: 指定日志文件的路径,PostgreSQL的启动和运行日志将记录在此文件中。
start: 指示pg_ctl启动PostgreSQL服务器。

3.6 进入数据库和修改密码
3.6.1 进入数据库
/usr/pgsql-13/bin/psql -p 5432
3.6.2 修改管理员postgres的密码
ALTER USER postgres WITH PASSWORD 'postgres';
3.7 修改配置
3.7.1 设置连接访问规则(修改配置文件pg_hba.conf,在文件末尾添加)

1 进入目录

cd /usr/pgsql-13/data/

2 编辑pg_hba.conf文件

vim pg_hba.conf

 3 在文件末尾添加

host    all             all              0.0.0.0/0              md5

在PostgreSQL的pg_hba.conf 文件中,“host all all 0.0.0.0/0 md5”是一种连接访问规则:

  • host:表示这是针对主机连接的规则类型。
  • all(第一个):适用于所有的数据库。
  • 0.0.0.0/0:这是一个网络标识。其中“0.0.0.0”为IP地址,“/0”为子网掩码,表示允许来自任何IP地址的主机连接。
  • md5:这是一种认证方法。使用md5意味着客户端连接数据库时需要提供经过md5加密后的密码进行身份验证。与“trust”(信任模式不需要密码)相比,这种方式更安全,适用于需要一定安全保障的场景,如生产环境或对外提供服务且需要限制访问权限的数据库环境。
3.7.2 设置PostgreSQL数据库服务器监听所有可用的网络接口上的传入连接请求

1 进入目录

cd /usr/pgsql-13/data/

2 编辑postgresql.conf文件

vim postgresql.conf

 修改listen_address为任意ip ,即 listen_addresses = '*'

如果此步骤报错,切换到root用户执行

3.7.3 重启数据库
/usr/pgsql-13/bin/pg_ctl -D /usr/pgsql-13/data -l /usr/pgsql-13/log/pg.log restart
3.7.8 测试连接

使用数据库连接工具测试即可,如果连接不上,看看防火墙

相关文章:

  • 交换机与ARP
  • Java 实现二分查找:[通俗易懂的算法系列之四]
  • word导出PDF老是目录格式变化的问题
  • 包含列表的字符串数据拆分成多列
  • 数字孪生驱动医药仓库安全革命:从被动响应到主动防御的范式转型
  • 我与数学建模之终章
  • spring-ai-alibaba第九章使用Milvus构建大模型RAG应用
  • Python编码规范
  • 【2020】【论文笔记】基于二维光子晶体的光控分光比可调Y——
  • BUUCTF-web刷题篇(13)
  • 高精度矢量内积计算方法 (单精度浮点, 超长矢量)
  • hashtable遍历的方法有哪些
  • uname
  • SpringBoot洗衣店订单管理系统设计与实现
  • LeetCode 3047 求交集区域内的最大正方形面积
  • VScode连接CentOS 7.6虚拟机
  • B站左神算法课学习笔记(P8):贪心
  • Python函数一(五)
  • 算法 | 基于蜘蛛蜂优化算法求解带时间窗的车辆路径问题研究(附matlab代码)
  • ZKmall开源商城:基于Spring Boot 3的高效后端架构设计与实践