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 端口,这是 PostgreSQL 的默认端口。--name postgresql
:为容器命名为postgresql
。-e POSTGRES_PASSWORD=123456
:设置 PostgreSQL 的超级用户密码为123456
。litongjava/postgres:16.3
:指定使用的 PostgreSQL 镜像及其版本。
步骤二:备份 PostgreSQL 数据
为了确保数据的持久性,我们需要将容器内的数据目录备份到宿主机。
mkdir -p /docker_data/postgres/master
docker cp postgresql:/var/lib/postgresql/data /docker_data/postgres/master/
解释
mkdir -p /docker_data/postgres/master
:在宿主机上创建一个目录用于存放 PostgreSQL 数据。docker cp postgresql:/var/lib/postgresql/data /docker_data/postgres/master/
:将容器内的 PostgreSQL 数据目录复制到宿主机的备份目录中。
步骤三:停止并移除原始容器
在配置数据持久化之前,需要停止并移除现有的 PostgreSQL 容器。
docker stop postgresql
docker rm postgresql
docker stop postgresql
:停止名为postgresql
的容器。docker rm postgresql
:移除已停止的容器。
步骤四:重新运行 PostgreSQL 容器并挂载数据卷
使用以下命令重新启动 PostgreSQL 容器,并将宿主机的数据目录挂载到容器内,以实现数据持久化。
docker run -d -p 5432:5432 --name pgmaster --restart=always \
-e PGDATA=/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=123456 \
-e TZ=Asia/Shanghai \
-v /docker_data/postgres/master/data:/var/lib/postgresql/data \
litongjava/postgres:16.3
--name pgmaster
:为新的容器命名为pgmaster
。--restart=always
:设置容器自动重启策略,确保容器在系统重启后自动启动。-e PGDATA=/var/lib/postgresql/data
:指定 PostgreSQL 数据目录的位置。-e POSTGRES_PASSWORD=123456
:设置 PostgreSQL 的超级用户密码。-e TZ=Asia/Shanghai
:设置容器的时区为上海时间。-v /docker_data/postgres/master/data:/var/lib/postgresql/data
:将宿主机的/docker_data/postgres/master/data
目录挂载到容器内的/var/lib/postgresql/data
,实现数据持久化。litongjava/postgres:16.3
:指定使用的 PostgreSQL 镜像及其版本。
验证安装
完成以上步骤后,您可以通过以下命令检查 PostgreSQL 容器是否正常运行:
docker ps -a
您应能看到名为 pgmaster
的容器正在运行,并且端口 5432
已正确映射。
连接 PostgreSQL
使用 psql
或其他 PostgreSQL 客户端工具连接到数据库:
psql -h localhost -p 5432 -U postgres
输入密码 123456
即可连接成功。
结论
通过以上步骤,您已经成功在单机环境下使用 Docker 安装并配置了 PostgreSQL 数据库。数据持久化配置确保了即使容器重新启动或删除,您的数据库数据依然安全存储在宿主机上。根据需要,您可以进一步配置 PostgreSQL 或 Docker 以满足特定的应用需求。
创建用户、授予权限及安装 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
类型现已可用。