PostgreSQL 安装
docker 安装
本文档将指导您如何在单机环境下使用 Docker 安装 PostgreSQL 数据库。我们将涵盖从初始安装到数据持久化的整个过程。
环境准备
确保您的系统已安装 Docker。如果尚未安装,请参考 Docker 官方文档 进行安装。
步骤一:使用 Docker 运行 PostgreSQL 容器
首先,使用以下命令启动一个 PostgreSQL 容器:
docker run -d \
-p 5432:5432 \
--name postgresql \
-e POSTGRES_PASSWORD=123456 \
litongjava/postgres:16.3
参数说明
-d
:以后台模式运行容器。-p 5432:5432
:将宿主机的 5432 端口映射到容器的 5432 端口。--name postgresql
:为容器命名为postgresql
。-e POSTGRES_PASSWORD=123456
:设置 PostgreSQL 的超级用户密码。litongjava/postgres:16.3
:指定镜像及版本。
步骤二:备份 PostgreSQL 数据
为了确保数据的持久性,我们需要将容器内的数据目录备份到宿主机。
# (可选)先移除旧目录
rm -rf /docker_data/postgres/master
# 创建用于存放备份的目录
mkdir -p /docker_data/postgres/master
# 将容器内的 /var/lib/postgresql 目录复制到主机
docker cp postgresql:/var/lib/postgresql /docker_data/postgres/master
解释
rm -rf /docker_data/postgres/master
:清空老数据(请谨慎执行)。mkdir -p …
:创建备份目录。docker cp postgresql:/var/lib/postgresql /docker_data/postgres/master
:将容器内部的目录整体拷贝到宿主机。
步骤三:停止并移除原始容器
在配置数据持久化之前,需要停止并移除现有的 PostgreSQL 容器。
docker stop postgresql
docker rm postgresql
步骤四:重新运行 PostgreSQL 容器并挂载数据卷
使用以下命令重新启动 PostgreSQL 容器,并将宿主机的数据目录挂载到容器内的 /var/lib/postgresql/data
,以实现数据持久化。
docker run -d \
--name pgmaster \
-p 15432:5432 \
--restart=always \
-e POSTGRES_PASSWORD=123456 \
-e TZ=Asia/Shanghai \
-v /docker_data/postgres/master/data:/var/lib/postgresql/data \
litongjava/postgres:16.3
--restart=always
:容器意外退出或宿主机重启后自动重启。-v /docker_data/postgres/master/data:/var/lib/postgresql/data
:将主机目录挂载到容器的PGDATA
(默认就是/var/lib/postgresql/data
)上,保证数据持久化。
验证安装
docker ps -a
确保能看到名为 pgmaster
的容器在运行,端口映射正常。
连接 PostgreSQL
psql -h localhost -p 15432 -U postgres
输入密码 123456
即可。
创建用户、授予权限及安装 pgvector 插件
以下是用于在 PostgreSQL 中创建新用户和数据库,授予必要权限,并安装及测试 pgvector
插件的步骤,
1. 切换到 PostgreSQL 用户
首先,切换到 PostgreSQL 系统用户:
su - postgres
2. 连接到 PostgreSQL
使用 psql
连接到 PostgreSQL:
psql
3. 创建数据库和用户
在 psql
提示符下,执行以下命令来创建数据库 max_kb
和用户 max_kb
,并设置密码:
-- 创建数据库
CREATE DATABASE max_kb;
-- 创建用户并设置密码
CREATE USER max_kb WITH PASSWORD '00000000';
4. 授予用户权限
授予用户 max_kb
对数据库 max_kb
的所有权限:
GRANT ALL PRIVILEGES ON DATABASE max_kb TO max_kb;
此外,确保用户 max_kb
对 public
模式拥有必要的权限,以便在其中创建表:
-- 连接到 max_kb 数据库
\c max_kb
-- 授予 public 模式的所有权限
GRANT ALL PRIVILEGES ON SCHEMA public TO max_kb;
注意:无需更改 public
模式的所有者,除非有特定需求。
5. 安装并启用 pgvector 插件
确保您已安装 pgvector
插件。如果未安装,可以使用以下命令进行安装(以基于 Debian 的系统为例):
sudo apt-get update
sudo apt-get install postgresql-14-pgvector # 根据您的 PostgreSQL 版本调整
连接到 max_kb
数据库并启用 pgvector
插件:
-- 连接到 max_kb 数据库
\c max_kb
-- 创建 pgvector 扩展
CREATE EXTENSION IF NOT EXISTS vector;
验证扩展是否成功启用:
SELECT * FROM pg_extension WHERE extname = 'vector';
如果返回一行结果,说明扩展已成功启用。
6. 测试 pgvector 插件
创建一个使用 vector
类型的测试表,以确认 pgvector
正常工作:
CREATE TABLE vector_test (
id SERIAL PRIMARY KEY,
v VECTOR(3)
);
如果表创建成功,说明 vector
类型现已可用。
结论
通过以上步骤,您已经成功在单机环境下使用 Docker 安装并配置了 PostgreSQL 数据库。数据持久化配置确保了即使容器重新启动或删除,您的数据库数据依然安全存储在宿主机上。根据需要,您可以进一步配置 PostgreSQL 或 Docker 以满足特定的应用需求。