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

MariaDB 10.6 Error 4150:用户因过多凭证错误被封锁求助

排查与解决MariaDB 10.6用户频繁因凭证错误被锁的问题

核心原因分析

max_connect_errors统计的是同一主机来源的失败连接尝试次数,但你用错误密码无法复现问题,说明触发锁定的不是普通密码错误,大概率是以下场景:

  • 应用线程的数据库连接配置存在错误:比如连接串里的用户名、密码写错,或是加载了过期凭证,导致每个新线程发起的连接都验证失败,快速耗尽错误次数上限
  • 主机解析不稳定:应用服务器的主机名解析结果波动,同一物理机器被识别为不同IP/主机名,每个新解析结果会单独统计错误次数,多来源错误累加触发锁定
  • 连接/会话管理异常:主服务的连接池配置不当,频繁创建销毁连接,且部分连接初始化时凭证验证失败
  • MariaDB 10.6特定逻辑:该版本的max_connect_errors统计范围可能包含TLS握手失败、非密码类权限验证失败等场景,不止局限于密码错误

分步排查步骤

  1. 实时监控失败连接日志
    开启通用查询日志,过滤目标用户的失败请求:

    SET GLOBAL general_log = 1;
    SET GLOBAL general_log_file = '/var/log/mysql/general.log';
    

    查看日志确认错误类型(密码错误/TLS错误/权限不足),以及请求来源的IP/主机名是否一致。

  2. 核对应用连接配置

    • 检查主服务和所有线程的数据库连接串:确认用户名、密码、连接地址(IP/主机名)是否正确
    • 排查是否存在硬编码过期凭证,或是配置文件加载路径错误(读取了旧配置)
  3. 验证主机解析一致性
    在应用服务器多次执行nslookup <mariadb-host>,查看返回IP是否稳定;同时在MariaDB中执行:

    SELECT host, user FROM mysql.user WHERE user = '你的应用账号';
    

    确认账号授权的主机范围(如%、特定IP或主机名),若授权的是主机名但解析不稳定,会导致每次连接被视为不同来源。

  4. 查看锁定状态与错误统计
    执行以下命令获取详细信息:

    -- 查看目标用户的进程状态
    SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = '你的应用账号';
    -- 查看用户的错误次数配置
    SELECT host, user, max_connect_errors FROM mysql.user WHERE user = '你的应用账号';
    -- 查看主机缓存中的错误统计
    SELECT * FROM performance_schema.host_cache WHERE host = '应用服务器IP';
    

临时缓解与长期优化

  • 临时缓解:先调高max_connect_errors至合理值(如1000),避免频繁锁定:
    SET GLOBAL max_connect_errors = 1000;
    
    修改my.cnf(或my.ini)永久生效:
    max_connect_errors = 1000
    
  • 根本修复:
    • 修正所有应用线程的连接配置,确保凭证正确
    • 若为解析问题,改用IP地址连接数据库,或在MariaDB中授权应用服务器的所有可能IP
    • 优化应用线程与连接池配置,减少不必要的连接创建销毁操作

测试环境无法复现的原因

测试场景单一:你手动用错误密码连接是同一主机的连续失败,而生产环境是多线程、可能多解析来源的分散错误,或是错误类型不同(如TLS握手失败),触发锁定的条件不一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:22:46