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

Python3.6使用PyMySQL0.8.0连接MySQL时密码被忽略,报1045错误求助

这个错误提示其实很明确——MySQL服务器收到你的连接请求时,发现你没有提供密码,所以直接拒绝了访问。至于为什么PyMySQL没把你写的密码传过去,大概率是参数传递的问题,下面给你分析几种常见原因和解决办法:

  • 优先用关键字参数,避免位置顺序搞错
    虽然PyMySQL 0.8.0的connect函数位置参数顺序是host, user, password, database,但手动写位置参数很容易记混顺序(比如不小心把密码和数据库名搞反)。改用关键字参数可以彻底避免这个问题,代码更清晰也不容易错:

    import pymysql
    db = pymysql.connect(
        host="localhost",
        user="user",
        password="password",
        database="database"
    )
    

    这样每个参数的作用都一目了然,不会出现参数位置偏移导致密码没被正确传递的情况。

  • 检查密码是否被意外设为None/空字符串
    如果你是从变量或者配置文件里读取密码,要确认这个值不是None或者空字符串""。当PyMySQL收到None作为密码参数时,连接时就不会向MySQL发送密码,自然会触发这个错误。

  • 验证MySQL用户的登录权限
    先在命令行测试一下这个用户能不能正常登录:打开终端输入mysql -u user -p,然后输入你的密码。如果命令行都登不上,那可能是用户不存在、密码错误或者没有本地登录权限,这时候得先去MySQL里调整用户权限或者确认密码。如果命令行能登录,那肯定是代码里参数传递的问题,回到第一条用关键字参数试试。

  • 密码包含特殊字符时的注意事项
    如果你的密码里有@、#、$这类特殊字符,用位置参数可能会出现解析异常(虽然Python字符串本身支持,但保险起见还是用关键字参数更稳妥),避免因为字符转义问题导致密码没有被正确传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:45:13