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

Mosquitto-go-auth结合PostgreSQL认证失败问题求助

排查Mosquitto + mosquitto-go-auth + PostgreSQL认证失败问题

根据你描述的日志提示error: received null username or password for unpwd check,核心问题是Mosquitto的认证插件未正确接收到传入的用户名/密码,或插件配置存在问题导致无法正常验证。以下是具体排查步骤:

1. 确认Mosquitto核心认证配置

  • 检查mosquitto.conf是否开启强制认证:
    allow_anonymous no
    password_file none
    
    若allow_anonymous设为yes,Mosquitto会跳过认证流程,导致插件无法触发;同时需禁用默认的password_file,确保使用插件认证。
  • 确认插件加载路径正确(建议用绝对路径避免路径解析问题):
    plugin /usr/lib/mosquitto-go-auth.so
    plugin_opt pg_enabled true
    

2. 验证mosquitto-go-auth的PostgreSQL查询配置

  • 检查pg_userquery参数是否匹配你的数据库结构:
    plugin_opt pg_userquery "SELECT password_hash FROM test_user WHERE username = $1 LIMIT 1;"
    
    确保表名、字段名与PostgreSQL中的实际结构完全一致(注意大小写,PostgreSQL对带引号创建的表/字段区分大小写)。
  • 确认数据库连接参数正确:
    plugin_opt pg_host localhost
    plugin_opt pg_port 5432
    plugin_opt pg_dbname your_db_name
    plugin_opt pg_user your_db_user
    plugin_opt pg_password your_db_password
    
    用上述参数通过psql手动连接数据库,验证是否能正常访问:
    psql -h localhost -p 5432 -U your_db_user -d your_db_name
    

3. 检查PostgreSQL权限与数据有效性

  • 确保插件使用的数据库用户对test_user表拥有SELECT权限:
    GRANT SELECT ON test_user TO your_db_user;
    
  • 手动执行用户查询,验证返回的哈希值是否正确:
    SELECT password_hash FROM test_user WHERE username = 'Frogger';
    
    用bcrypt工具验证密码与哈希的匹配性,比如Python脚本:
    import bcrypt
    password = b"1234"
    hash_from_db = b"$2a$16$..."  # 替换为数据库中的哈希值
    print(bcrypt.checkpw(password, hash_from_db))
    
    确保输出为True。

4. 排查客户端命令与日志细节

  • 简化mosquitto_sub命令,避免shell引号解析问题:
    mosquitto_sub -h localhost -t test -u Frogger -P 1234
    
  • 调高Mosquitto日志等级到all,获取更详细的认证流程信息:
    在mosquitto.conf中添加:
    log_type all
    
    重启Mosquitto后再次尝试订阅,查看日志中是否有插件与数据库交互的错误(如查询失败、权限不足等)。

5. 确认插件注册状态

  • 执行mosquitto -v前台启动Mosquitto,查看启动日志是否明确显示:
    Registered postgres backend
    Registered postgres user checkers
    Registered postgres acl checkers
    
    确保所有PostgreSQL相关检查器正常注册,无加载失败提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:12:20