一步到位:M4 芯片 Mac 安装 PostgreSQL 16 并适配 pgvector 教程

一、安装 PostgreSQL 16

1. 通过 Homebrew 安装 PostgreSQL 16

打开终端,执行以下命令通过 Homebrew 安装指定版本的 PostgreSQL 16:

css 复制代码
brew install postgresql@16

2. 配置环境变量

将 PostgreSQL 16 的可执行文件路径添加到环境变量,确保终端能直接识别 pg 相关命令(适配 zsh 终端,若使用 bash 需将 .zshrc 替换为 .bashrc):

bash 复制代码
echo 'export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH"' >> ~/.zshrc
source .zshrc

3. 配置允许局域网访问

默认配置下 PostgreSQL 仅允许本地访问,若需局域网内其他设备连接,需修改配置文件:

bash 复制代码
vi /opt/homebrew/var/postgresql@16/postgresql.conf

在文件中找到被注释的 listen_addresses 行,取消注释并修改为以下内容(监听所有网络接口,支持本地及局域网访问):

ini 复制代码
listen_addresses = '*'  # 监听所有IP,如需仅本地访问可改为'localhost'
# 注:修改后需重启服务才能生效

4. 启动 PostgreSQL 服务

使用 Homebrew 命令启动服务,该命令会自动配置开机自启:

sql 复制代码
brew services start postgresql@16

验证启动状态:若终端无报错,可通过 brew services list 查看,postgresql@16 一行显示 started 即为成功。

5. 创建 PostgreSQL 超级用户角色

首先通过默认方式进入 PostgreSQL 命令行(默认连接系统自带的 postgres 数据库):

复制代码
psql -d postgres

若终端提示符变为 postgres=#,说明成功进入命令行环境。执行以下 SQL 语句创建超级用户角色(替换密码为自定义密码):

sql 复制代码
-- 创建 postgres 角色,赋予超级用户权限、创建数据库/角色权限,并设置密码
CREATE ROLE postgres WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD '你的自定义密码';
​
-- (可选)验证角色创建结果:列出所有角色信息
\du
​
-- 退出 PostgreSQL 命令行
\q

6. 修改认证规则(关键:确保密码登录生效)

编辑 pg_hba.conf 配置文件,调整认证方式为密码认证(替换默认的 peer/trust 模式):

bash 复制代码
vi /opt/homebrew/var/postgresql@16/pg_hba.conf

找到对应配置行,修改或添加以下规则(覆盖原有同名配置):

python 复制代码
# 本地socket连接:采用md5密码认证
local   all             all                                     md5
# TCP/IP本地连接(127.0.0.1):采用md5密码认证
host    all             all             127.0.0.1/32            md5
# (可选)允许局域网内所有设备访问:采用md5密码认证(需提前配置listen_addresses='*')
host    all             all             0.0.0.0/0               md5

7. 重启服务使配置生效

修改完 postgresql.conf 和 pg_hba.conf 后,必须重启服务才能让配置生效:

css 复制代码
brew services restart postgresql@16

二、安装并适配 pgvector 扩展

pgvector 是 PostgreSQL 的向量数据库扩展,需通过源码编译安装以适配本地 PostgreSQL 16 环境。

1. 安装编译依赖工具

首先安装 git、make、gcc 等编译必需的工具:

go 复制代码
brew install git make gcc

2. 克隆 pgvector 源码并编译安装

通过 git 克隆源码,指定 PostgreSQL 16 的 pg_config 路径进行编译安装(确保适配当前安装的 PG 版本):

bash 复制代码
# 克隆 pgvector 源码到本地
git clone https://github.com/pgvector/pgvector.git
# 进入源码目录
cd pgvector
​
# 编译:指定 PostgreSQL 16 的 pg_config 路径(关键:避免适配错误版本)
make PG_CONFIG=/opt/homebrew/opt/postgresql@16/bin/pg_config
​
# 安装到 PostgreSQL 16 扩展目录(需输入电脑开机密码)
sudo make install PG_CONFIG=/opt/homebrew/opt/postgresql@16/bin/pg_config

3. 验证 pgvector 编译安装结果

通过查看 PostgreSQL 16 扩展目录是否存在 vector 相关文件,验证安装是否成功:

bash 复制代码
ls -la /opt/homebrew/opt/postgresql@16/share/postgresql@16/extension/ | grep vector

若输出中包含 vector.controlvector--x.x.x.sql(x.x.x 为版本号),说明编译安装成功。

4. 重启 PostgreSQL 并创建 pgvector 扩展

安装完成后需重启 PostgreSQL 服务,然后在数据库中创建 vector 扩展:

ini 复制代码
# 重启 PostgreSQL 16 服务(修正原文档笔误:将@15改为@16)
brew services restart postgresql@16
​
# 进入 PostgreSQL 命令行
psql -d postgres -U postgres  # -U 指定刚创建的 postgres 角色,需输入之前设置的密码
​
# 在命令行中创建 vector 扩展
CREATE EXTENSION IF NOT EXISTS vector;

若执行 CREATE EXTENSION IF NOT EXISTS vector; 后无报错,说明扩展创建成功。

5. 测试 pgvector 功能可用性

通过创建向量表、插入数据、查询数据的流程,验证 pgvector 是否正常工作:

sql 复制代码
-- 1. 创建包含向量字段的测试表(vector(3) 表示3维向量)
CREATE TABLE test_vectors (
  id SERIAL PRIMARY KEY,
  vec vector(3)
);
​
-- 2. 插入2条3维向量测试数据
INSERT INTO test_vectors (vec) VALUES ('[1,2,3]'), ('[4,5,6]');
​
-- 3. 查询插入的数据,验证向量字段正常存储
SELECT * FROM test_vectors;
​
-- (可选)测试完成后删除测试表
DROP TABLE test_vectors;
​
-- (可选)退出命令行
\q

若上述 SQL 语句均能正常执行且无报错,说明 pgvector 已完全适配 PostgreSQL 16 并可用。

相关推荐
GZKING17 小时前
ThinkPHP 8 报错"think\model\pivot" not found
后端
Smoothzjc17 小时前
👉 求你了,别再裸写 fetch 做 AI 流式响应了!90% 的人都在踩这个坑
前端·人工智能·后端
superman超哥18 小时前
Rust 或模式(Or Patterns)的语法:多重匹配的优雅表达
开发语言·后端·rust·编程语言·rust或模式·or patterns·多重匹配
摸鱼的春哥19 小时前
实战:在 Docker (Windows) 中构建集成 yt-dlp 的“满血版” n8n 自动化工作流
前端·javascript·后端
IT 行者19 小时前
Spring Security 7 OAuth2 Token 格式选择浅析
java·后端·spring
幽络源小助理19 小时前
Springboot机场乘客服务系统源码 – SpringBoot+Vue项目免费下载 | 幽络源
vue.js·spring boot·后端
源代码•宸19 小时前
Golang基础语法(go语言error、go语言defer、go语言异常捕获、依赖管理、Go Modules命令)
开发语言·数据库·后端·算法·golang·defer·recover
SnrtIevg19 小时前
Vavr 用户指南
java·后端