blowfish_secret长度不足会导致cookie认证失效,因其必须≥32字节以满足AES-256密钥要求,否则加密cookie无法解密,引发登录后立即登出;该密钥仅加密会话token,不参与密码传输。
cookie模式不存密码,每次登录都走MySQL原生认证
它根本不会把$cfg['servers'][$i]['password']当回事——哪怕你配置文件里写了,phpmyadmin在auth_type = 'cookie'下也直接忽略。用户输的密码不落地、不缓存、不复用,只传给mysql服务端做一次校验。攻击者即使拿到config.inc.php,也拿不到任何数据库凭证。
blowfish_secret不是摆设,它加密的是会话token而非密码本身
这个字段必须存在且长度≥32字符,否则登录页直接报错“配置文件现在需要绝密的短语密码(blowfish_secret)”。它不参与密码传输,只用于加密服务端生成的会话ID和临时token。常见错误包括:
• 复制时带中文引号或前后空格
• 用php -r "echo bin2hex(random_bytes(16));"生成后没补足32位
• 写在if块里导致未执行
cookie模式依赖PHP session,但session失效≠密码泄露
如果session.save_path不可写,或PHP没启用session模块,会导致登录后立刻跳回首页——但这只是会话中断,MySQL侧的认证流程已完成且无残留。比起auth_type = 'config'把root密码明文写死在配置里,这种失败是可控的、无敏感信息泄漏的。
服务器列表下拉切换时,host/port/user全由配置块定义,不共享上下文
每个$cfg['Servers'][1]、$cfg['Servers'][2]必须独立填对host、port、user,索引从1开始连续。跳号(如只有[1]和[3])会让phpMyAdmin跳过后续项;填了password反而增加维护负担,还可能误导人以为它生效。
Host字段是否允许远程连接——root@'localhost'在cookie模式下连不上host = '192.168.1.100'的服务器,报错常显示为“#1045 Access denied”,但实际卡在权限匹配环节。



















