介绍两种部署方式,一直接部署在 linux 服务器上,二先安装 docker,然后通过 docker 部署
sudo dnf update -y
# 测试环境
systemctl stop firewalld
systemctl disable firewalld
# 查看防火墙状态
firewall-cmd --state
# 生产环境建议配置防火墙规则:
# 开放 PostgreSQL 端口(默认 5432):
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload
方法 1:通过 RockyLinux 默认仓库安装
dnf install -y postgresql-server
sudo postgresql-setup --initdb
sudo systemctl enable postgresql
sudo systemctl start postgresql
# 检查服务状态
sudo systemctl status postgresql
方法 2:通过 PostgreSQL 官方仓库安装(推荐)
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
# 检查服务状态
sudo systemctl status postgresql-16
# 进入 psql
sudo -u postgres psql
# 修改密码
ALTER USER postgres WITH PASSWORD '你的密码';
# 输入\q退出
编辑 /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
# 通过 RockyLinux 默认仓库安装
sudo systemctl restart postgresql
# 通过 PostgreSQL 官方仓库安装,如安装不同版本,自行调整
sudo systemctl restart postgresql-16
# 进入 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
# 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
# 停止 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-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 <
docker pull postgres:16
方式一:使用 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 启动,推荐这种
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
docker compose -f postgresql.yaml up -d
# 查看容器状态
docker ps
# 查看日志
docker logs postgresql
# 进入容器,输入密码,检查是否能登录
docker exec -it postgresql psql -U postgres -W
# 进入容器内的PostgreSQL命令行:
docker exec -it postgresql psql -U postgres
# 执行密码修改命令:
ALTER USER postgres WITH PASSWORD '新密码';
# 输入\q退出