XZY·ONE

Xzy®

使用 Docker 安装 PostgreSQL 并配置 SSL

38
2024-12-10
使用 Docker 安装 PostgreSQL 并配置 SSL

PostgreSQL 和 MySQL 的对比分析

PostgreSQL 的主表存储采用堆表形式,而 MySQL 则是索引组织表。相比之下,PostgreSQL 能够支持更大的数据量,适合高性能场景。
在复制方式上,PostgreSQL 采用物理复制,相较于 MySQL 基于 binlog 的逻辑复制,其数据一致性更加可靠,复制性能更高,同时对主机性能的影响更小。

安装 PostgreSQL 的步骤

1. 使用 Docker 安装 PostgreSQL

以下是使用 Docker 快速安装和配置 PostgreSQL 的命令:

docker run -d \
	--name postgres \
         -p 5432:5432 \
	-e POSTGRES_USER=postgres \
	-e POSTGRES_PASSWORD=password \
	-e PGDATA=/var/lib/postgresql/data/pgdata \
	-e TZ=Asia/Shanghai \
	-v /path/postgre:/var/lib/postgresql/data \
        --restart unless-stopped \
	postgres:17

参数说明:

  • POSTGRES_USERPOSTGRES_PASSWORD:设置默认管理员用户名和密码。

  • PGDATA:指定数据文件存储路径。

  • TZ:设置时区,确保日志和时间一致。

  • -v:将容器数据持久化到宿主机路径。

  • --restart unless-stopped:容器崩溃后会自动重启。

2. 设置 SSL 支持

配置 SSL 加密访问,解决部分应用提示连接失败的问题。

(1)进入 PostgreSQL 容器:

docker exec -it postgres bash

(2)生成 SSL 证书和私钥:

openssl req -new -text -passout pass:abcd -subj /CN=localhost -out server.req -keyout privkey.pem
openssl rsa -in privkey.pem -passin pass:abcd -out server.key
openssl req -x509 -in server.req -text -key server.key -out server.crt
chmod 600 server.key

(3)配置 PostgreSQL 使用 SSL:

编辑 /var/lib/postgresql/data/postgresql.auto.conf 文件,添加以下内容:

# - SSL -
ssl = on
ssl_cert_file = '/var/lib/postgresql/data/server.crt'
ssl_key_file = '/var/lib/postgresql/data/server.key'

(4)退出 PostgreSQL 容器并重启。

3. 创建数据库和用户

完成基本配置后,可以通过以下命令创建数据库和用户。

(1)进入容器:

docker exec -it postgres bash

(2)登录 PostgreSQL:

psql -h localhost -p 5432 -U postgres

(3)执行以下 SQL 命令:

-- 创建数据库
CREATE DATABASE dbname;

-- 创建用户并设置密码
CREATE USER dbuser WITH PASSWORD 'password';

-- 授权用户访问数据库
\c dbname
GRANT ALL ON SCHEMA public TO dbuser;

总结

通过上述步骤,您可以快速使用 Docker 部署一个支持 SSL 的 PostgreSQL 服务。