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

连接MySQL报sha256_password requires SSL接口错误如何解决

错误原因
  • 报错核心原因是你连接的MySQL账号使用了sha256_password身份认证插件,该插件默认强制要求数据库连接必须通过SSL加密通道建立;你当前编写的SQLAlchemy连接代码没有配置任何SSL相关参数,底层的mysql-connector驱动检测到连接不符合安全要求,直接抛出接口错误。
可行修复方案

根据使用场景不同,可选择以下任意一种方案修复:

  • 方案1:配置SSL连接(推荐生产环境使用,符合安全规范)
    不需要额外修改数据库侧配置,只需要在创建引擎时补充SSL参数即可。如果是内网测试环境不需要校验证书合法性,可以直接在连接串后追加参数:

    engine = sqlalchemy.create_engine(
        f'mysql+mysqlconnector://{user}:{password}@{server}:{port}/{schema}?ssl_verify_cert=false',
        echo=False
    )
    

    如果是生产环境需要使用正规CA证书校验,可通过connect_args传入证书路径配置:

    engine = sqlalchemy.create_engine(
        f'mysql+mysqlconnector://{user}:{password}@{server}:{port}/{schema}',
        connect_args={
            "ssl_ca": "/path/to/ca.pem",
            "ssl_cert": "/path/to/client-cert.pem",
            "ssl_key": "/path/to/client-key.pem"
        },
        echo=False
    )
    
  • 方案2:修改数据库用户认证插件(适合本地开发/测试环境)
    直接将目标账号的认证插件改为无强制SSL要求的mysql_native_password,不需要修改业务侧连接代码。登录MySQL后执行如下SQL即可:

    -- 替换成实际的账号名、允许访问的主机地址、账号密码
    ALTER USER 'your_username'@'your_access_host' IDENTIFIED WITH mysql_native_password BY 'your_password';
    FLUSH PRIVILEGES;
    
  • 方案3:允许公钥检索跳过SSL
    在创建引擎时通过连接参数关闭SSL、允许公钥检索,直接建立非加密连接:

    engine = sqlalchemy.create_engine(
        f'mysql+mysqlconnector://{user}:{password}@{server}:{port}/{schema}',
        connect_args={
            "allow_public_key_retrieval": True,
            "ssl_disabled": True
        },
        echo=False
    )
    

    该方案存在账号密码、传输数据明文泄露风险,仅限本地临时调试使用,禁止生产环境使用


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:34:47