RockyLinux 9.5 部署 PostgreSQL

介绍两种部署方式,一直接部署在 linux 服务器上,二先安装 docker,然后通过 docker 部署

一、直接部署在 Linux 服务器

1、准备工作

(1)更新系统软件包
sudo dnf update -y
(2)关闭防火墙
# 测试环境
systemctl stop firewalld
systemctl disable firewalld

# 查看防火墙状态
firewall-cmd --state

# 生产环境建议配置防火墙规则:
# 开放 PostgreSQL 端口(默认 5432):
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload

2、安装 PostgreSQL

方法 1:通过 RockyLinux 默认仓库安装
(1)安装 PostgreSQL 服务器:
dnf install -y postgresql-server
(2)初始化数据库
sudo postgresql-setup --initdb
(3)启动 PostgreSQL 服务并设置开机自启:
sudo systemctl enable postgresql
sudo systemctl start postgresql

# 检查服务状态
sudo systemctl status postgresql
方法 2:通过 PostgreSQL 官方仓库安装(推荐)
(1)添加 PostgreSQL Yum 仓库,下面两个版本任选一个
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
(2)禁用内置的 PostgreSQL 模块
sudo dnf -qy module disable postgresql
(3) 安装 PostgreSQL,版本 16
sudo dnf install -y postgresql16-server
(4)初始化数据库
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
(5)启动 PostgreSQL 服务并设置开机自启:
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16

# 检查服务状态
sudo systemctl status postgresql-16

3、基本配置

(1)设置 PostgreSQL 用户密码
# 进入 psql
sudo -u postgres psql

# 修改密码
ALTER USER postgres WITH PASSWORD '你的密码';

# 输入\q退出
(2)配置远程访问(可选)

编辑 /var/lib/pgsql/16/data/postgresql.conf(通过默认仓库安装路径是:/var/lib/pgsql/data/postgresql.conf),取消注释并修改:

listen_addresses = '*'  # 允许所有IP访问
port = 5432             # 默认端口

编辑 /var/lib/pgsql/16/data/pg_hba.conf(通过默认仓库安装路径是:/var/lib/pgsql/data/pg_hba.conf),添加或修改以下行(根据需求调整)

# 允许所有IP通过密码访问
host    all             all             0.0.0.0/0               md5
(3)重启 PostgreSQL 服务使配置生效
# 通过 RockyLinux 默认仓库安装
sudo systemctl restart postgresql

# 通过 PostgreSQL 官方仓库安装,如安装不同版本,自行调整
sudo systemctl restart postgresql-16

4、常用管理命令

# 进入 psql
sudo -u postgres psql

# 创建数据库
CREATE DATABASE testdb;

# 创建用户:
CREATE USER username WITH PASSWORD 'password';
# 授予权限:
GRANT ALL PRIVILEGES ON DATABASE dbname TO username;

# 查看所有数据库
\l

# 切换到新数据库
\c testdb

# 查看当前数据库名称
SELECT current_database();

# 退出
\q

# 查看服务状态:
sudo systemctl status postgresql-16

# 停止服务:
sudo systemctl stop postgresql-16

# 启动服务:
sudo systemctl start postgresql-16

# 重启服务:
sudo systemctl restart postgresql-16

# 查看日志:
sudo journalctl -u postgresql-16

5、备份与恢复

# username 一般是 postgres,根据情况自行修改

# 备份单个数据库:
pg_dump -U username -d dbname -f backup.sql
# 恢复单个数据库
psql -U username -d dbname -f backup.sql

# 备份所有数据库:
pg_dumpall -U username -f alldbs.sql
# 恢复所有数据库
psql -U postgres -f alldbs.sql

6、重置忘记的 postgres 用户密码

# 停止 PostgreSQL 服务:
sudo systemctl stop postgresql-16

# 进入单用户模式:
sudo -u postgres /usr/pgsql-16/bin/postgres --single -D /var/lib/pgsql/16/data

# 在提示符下执行:
ALTER USER postgres WITH PASSWORD '新密码';

# 然后按 Ctrl+D 退出

# 正常启动服务:
sudo systemctl start postgresql-16

二、使用 docker 部署

1、安装 docker

# 添加阿里云docker-ce仓库
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 列出当前系统中所有可安装的 docker-ce 版本,并按照版本号从高到低进行排序,同时显示重复的版本。
dnf list docker-ce --showduplicates | sort -r
# 安装最新版本 docker-ce,也可以指定版本安装(dnf install -y docker-ce-3:28.1.1-1.el9)
dnf install -y docker-ce
# 启用Docker Cgroup用于限制进程的资源使用量,如CPU、内存资源
# 创建目录,存放 docker 的配置文件
mkdir -p /etc/docker
# 创建并写入 /etc/docker/daemon.json 文件,设置 Docker 使用 systemd 作为 Cgroup 驱动
# registry-mirrors 配置:docker 镜像加速器的地址列表。
cat > /etc/docker/daemon.json <

2、拉取 PostgreSQL 镜像

docker pull postgres:16

3、运行 PostgreSQL 容器

方式一:使用 docker run

docker run -d \
  --name postgresql \
  -p 5432:5432 \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=qwe123 \
  -e POSTGRES_DB=postgres \
  -v /data/postgresql/data:/var/lib/postgresql/data \
  --restart=unless-stopped \
  postgres:16

方式二:使用 yaml 启动,推荐这种

(1) 根目录下创建 postgresql.yaml 文件,内容如下:
version: '3.8'

services:
  postgresql:
    image: postgres:16
    container_name: postgresql
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: your_password
      POSTGRES_DB: postgres
    volumes:
      - /data/postgresql/data:/var/lib/postgresql/data
    restart: unless-stopped
(2) 启动服务
docker compose -f postgresql.yaml up -d

4、验证安装

# 查看容器状态
docker ps

# 查看日志
docker logs postgresql

# 进入容器,输入密码,检查是否能登录
docker exec -it postgresql psql -U postgres -W

5、容器内重置 PostgreSQL 密码

# 进入容器内的PostgreSQL命令行:
docker exec -it postgresql psql -U postgres

# 执行密码修改命令:
ALTER USER postgres WITH PASSWORD '新密码';

# 输入\q退出

你可能感兴趣的:(postgresql,数据库,docker,linux,容器)