温馨提示×

PostgreSQL在Ubuntu上的扩展插件怎么安装

小樊
41
2026-01-01 10:10:01
栏目: 云计算

在 Ubuntu 上安装 PostgreSQL 扩展的实用步骤

一 准备与系统级安装

  • 更新索引并安装常用包:多数内置扩展随 postgresql-contrib 提供;编译第三方扩展需要 postgresql-server-dev-<版本>(或 postgresql-server-dev-all)。示例(请按实际版本替换 <版本>):
    • sudo apt update
    • sudo apt install postgresql postgresql-contrib postgresql-server-dev-<版本>
  • 确认服务运行:sudo systemctl status postgresql
  • 说明:部分扩展(如 pgcrypto、hstore、fuzzystrmatch、isn 等)在老版本中位于 /usr/share/postgresql/<版本>/contrib/ 目录,供脚本方式安装;新版本更推荐用 CREATE EXTENSION。

二 在数据库中创建扩展

  • 连接目标库:psql -U <用户名> -d <数据库名>
  • 常用 SQL:
    • 查看可用扩展:SELECT * FROM pg_available_extensions;
    • 查看已安装扩展:SELECT * FROM pg_extension; 或在 psql 中 \dx
    • 创建扩展(示例):CREATE EXTENSION hstore;
    • 指定安装到某模式:CREATE EXTENSION IF NOT EXISTS hstore SCHEMA myschema;
  • 权限要求:通常需要数据库超级用户或具备相应权限的角色执行 CREATE EXTENSION。

三 常见扩展的安装方式速查

扩展 安装方式 备注
hstore APT 安装 contrib 后,在库中执行:CREATE EXTENSION hstore; 键值对存储
pgcrypto APT 安装 contrib 后,在库中执行:CREATE EXTENSION pgcrypto; 加密函数与类型
fuzzystrmatch APT 安装 contrib 后,在库中执行:CREATE EXTENSION fuzzystrmatch; 字符串相似度与音近算法
isn APT 安装 contrib 后,在库中执行:CREATE EXTENSION isn; ISBN/ISMN/ISSN/UPC 等标准编号类型
pgvector 源码编译安装后,在库中执行:CREATE EXTENSION vector; 向量类型与相似度检索
PostGIS 通过 APT 安装 postgresql-<版本>-postgis-<版本> 后,在库中执行:CREATE EXTENSION postgis; 地理空间对象与空间函数
说明:上表中 contrib 提供的扩展(如 hstore、pgcrypto、fuzzystrmatch、isn)在 Ubuntu 上通常随 postgresql-contrib 提供;pgvector 需编译安装;PostGIS 为官方扩展包,名称含版本号。

四 源码编译安装第三方扩展通用步骤

  • 安装编译依赖与服务器开发包:sudo apt install build-essential cmake <其他依赖> postgresql-server-dev-<版本>
  • 获取源码并编译安装(以 pgvector v0.7.0 为例):
    • wget https://github.com/pgvector/pgvector/archive/refs/tags/v0.7.0.tar.gz
    • tar -xvzf v0.7.0.tar.gz && cd pgvector-0.7.0
    • make -j$(nproc) && sudo make install
  • 在数据库中创建扩展:psql -U postgres -d <数据库名> -c “CREATE EXTENSION vector;”
  • 验证:\dx 或 SELECT * FROM pg_extension WHERE extname = ‘vector’;

五 需要预加载的扩展与排错要点

  • 预加载类扩展(需在 postgresql.conf 设置 shared_preload_libraries 并重启):例如 pg_duckdb 要求 shared_preload_libraries = ‘pg_duckdb’,然后 CREATE EXTENSION pg_duckdb;
  • 老版本脚本方式:早期扩展可用 psql -d <库名> -f <模块>.sql 方式执行(如 chkpass.sql、fuzzystrmatch.sql、isn.sql、hstore.sql),现代环境优先 CREATE EXTENSION。
  • 权限与版本:CREATE EXTENSION 通常需要超级用户;扩展需与当前 PostgreSQL 主版本匹配;部分云托管环境可能启用扩展白名单,仅允许特定扩展安装。

0