XZY·ONE

Xzy®

Docker安装PostgreSQL并配置SSL访问

29
2024-12-10
Docker安装PostgreSQL并配置SSL访问

PostgreSQL 主表采用堆表存放,MySQL 采用索引组织表,能够支持比 MySQL 更大的数据量。 PostgreSQL 的主备复制属于物理复制,相对于 MySQL 基于 binlog 的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。

安装步骤

Docker 安装 Postgres

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 设置 SSL 访问

#进入Postgres容器
docker exec -it postgres bash

#生成证书
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

# 在 /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'

# 重启Docker Postgres

创建数据库及用户:

# 进入Postgres容器
docker exec -it postgres bash
# 进入Postgres
psql -h localhost -p 5432 -U USERNAME
# 创建数据库及用户
CREATE DATABASE dbname;
CREATE USER dbuser WITH PASSWORD 'password';
# 进入数据库并授权
\c dbname;
GRANT ALL ON SCHEMA public TO dbuser;