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

Ubuntu 16.04下PAM与MySQL认证配置时pamtester报错求助

解决pamtester测试pam_mysql时出现"Unknown item type 'passwd'"的问题

我来帮你搞定这个问题,核心原因是你对pamtester的--item参数用法理解错了——passwd并不是pamtester支持的合法item类型,而且pam_mysql的配置参数也不应该通过pamtester的--item传递,而是要写在PAM配置文件里。

正确的操作步骤:

  1. 先配置好PAM规则文件
    编辑/etc/pam.d/mysql,确保参数正确(替换掉X为你的实际值,注意crypt要和数据库密码的加密方式匹配):

    auth required pam_mysql.so user=X passwd=X host=127.0.0.1 db=X table=X usercolumn=X passwdcolumn=X crypt=1
    
    • crypt参数说明:0=明文,1=CRYPT加密,2=MD5哈希,3=SHA256哈希,4=SHA512哈希,要和你数据库中存储密码的方式完全一致。
  2. 用正确的pamtester命令测试
    不需要通过--item传递密码,pamtester会在交互时提示你输入,或者用管道实现非交互:

    • 交互模式(推荐,更直观):
      pamtester mysql branja authenticate
      
      执行后会出现Password:提示,输入用户branja的密码即可完成认证测试。
    • 非交互模式(适合脚本):
      echo "你的密码" | pamtester mysql branja authenticate
      

为什么之前的命令会报错?

pamtester的--item参数是用来设置PAM会话中的特定属性(比如user、tty、rhost等),但它根本不支持passwd这个类型,所以你一传递就会触发Unknown item type "passwd"错误。而pam_mysql需要的数据库连接、表字段等参数,必须写在PAM配置文件里,而不是交给pamtester处理。

额外排查点

如果配置后还是认证失败,可以:

  • 查看/var/log/auth.log日志,里面会有PAM认证的详细错误信息(比如数据库连接失败、密码不匹配等)
  • 确认数据库用户(就是你在pam_mysql配置里写的user=X)有访问目标数据库和表的权限
  • 验证数据库中存储的密码加密方式和crypt参数完全匹配(比如如果密码是用SHA256哈希存储的,crypt要设为3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:19:46