一步到位: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 并可用。

相关推荐
GetcharZp2 小时前
抛弃低效SSH!这套Ansible+Web可视化神器,让你天天准点下班!
后端
weixin_446260855 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
ttwuai6 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
用户8356290780517 小时前
Python 实现 Excel 页面布局与打印设置自动化
后端·python
用户9931441579847 小时前
微服务框架中获取用户信息
后端
xuanWb7 小时前
手写一个 LLM API 网关:Anthropic 与 OpenAI 协议转换的完整实现
后端
苍何7 小时前
给 Codex 换皮肤这门生意,被我开源了
后端
用户8356290780517 小时前
Python 实现 Excel 命名范围(Named Range)的创建与管理
后端·python
程序员David7 小时前
我让 Claude 从架构文档一路干到代码,踩了三个坑才摸清边界
后端