卸载
如果之前没装过可以忽略这一步
卸载前记得备份数据库数据(如果还需要的话)!!!
一、删除 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 测试连接
使用数据库连接工具测试即可,如果连接不上,看看防火墙