You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 9.2.13加载高版本passwordcheck.so提示未定义符号plain_crypt_verify

问题解决:PostgreSQL 9.2.13加载高版本passwordcheck.so报错的处理方案

为什么会出现这个错误

直接从PostgreSQL 12复制passwordcheck.so到9.2版本使用是行不通的——不同大版本的PostgreSQL内部函数签名、符号定义差异很大,plain_crypt_verify这个符号在9.2的核心库中不存在,所以加载时会报错。ldd只能检查系统级依赖(比如libc之类的),无法检测PostgreSQL内部的符号依赖,所以它显示正常不代表模块能兼容。

可行的解决办法

1. 编译对应9.2版本的passwordcheck模块

虽然你是用apt-get安装的PostgreSQL,但可以单独编译对应版本的contrib模块:

  • 先安装编译所需的依赖包:
    sudo apt-get install postgresql-server-dev-9.2 build-essential
    
  • 获取PostgreSQL 9.2分支的passwordcheck源码:从PostgreSQL官方代码仓库的REL9_2_STABLE分支中提取contrib/passwordcheck目录下的所有文件。
  • 进入源码目录执行编译安装:
    make
    sudo make install
    
  • 编译完成后,再配置shared_preload_libraries = '$libdir/passwordcheck',重启PostgreSQL即可。

2. 用触发器+pgcrypto实现密码校验替代

如果不想编译模块,可以借助pgcrypto扩展和触发器实现类似的密码复杂度检查,不需要预加载库:

  • 首先启用pgcrypto扩展:
    CREATE EXTENSION pgcrypto;
    
  • 创建一个密码校验的函数,示例如下(可根据需求调整规则):
    CREATE OR REPLACE FUNCTION check_password_complexity()
    RETURNS TRIGGER AS $$
    BEGIN
      -- 检查密码长度至少8位,包含大小写字母、数字
      IF NEW.password IS NOT NULL AND NEW.password != '' THEN
        IF length(NEW.password) < 8 OR
           NEW.password !~ '[a-z]' OR
           NEW.password !~ '[A-Z]' OR
           NEW.password !~ '[0-9]' THEN
          RAISE EXCEPTION 'Password must be at least 8 characters long, include uppercase, lowercase letters and numbers';
        END IF;
      END IF;
      RETURN NEW;
    END;
    $$ LANGUAGE plpgsql;
    
  • 给pg_user表添加触发器,在用户创建或修改密码时触发校验:
    CREATE TRIGGER password_check_trigger
    BEFORE INSERT OR UPDATE OF password ON pg_user
    FOR EACH ROW EXECUTE FUNCTION check_password_complexity();
    

3. 升级PostgreSQL版本(推荐)

PostgreSQL 9.2是2012年发布的版本,早已停止官方支持(2017年就结束了),不仅没有passwordcheck模块,还存在安全漏洞和性能瓶颈。如果业务允许,建议升级到受支持的稳定版本(比如12+),升级后可以直接通过apt-get安装postgresql-contrib包,就能直接使用官方的passwordcheck模块。

内容的提问来源于stack exchange,提问作者are123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:48:32