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

MySQL无法连接PythonAnywhere的Django网站,报1045权限错误

解决PythonAnywhere上Django连接MySQL的1045权限错误

错误日志:

django.db.utils.OperationalError: (1045, "Access denied for user '<myusername>'@'10.0.0.116' (using password: YES)")

Django数据库配置:

DATABASES = {
    "default": {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '<myusername>$<mydatabasename>',
        'USER': '<myusername>',
        'PASSWORD': password, # 从其他文件导入的变量
        'HOST': '<myusername>.mysql.pythonanywhere-services.com',
    }
}

排查步骤:

  • 检查MySQL用户的数据库权限
    1045错误本质是MySQL拒绝了访问请求,和端口无关(已经建立连接才会返回该错误)。登录PythonAnywhere的MySQL控制台,执行命令查看用户权限:

    SHOW GRANTS FOR '<myusername>'@'%';
    

    确保结果包含对<myusername>$<mydatabasename>数据库的ALL PRIVILEGES权限,且允许的主机包含%或错误日志里的10.0.0.116。如果权限不足,在PythonAnywhere数据库管理页面重新授权。

  • 核对数据库名格式
    PythonAnywhere的MySQL数据库名必须严格遵循<用户名>$<数据库名>格式,注意是美元符号$,不能用其他符号。检查配置里的NAME值是否和控制台显示的数据库名完全一致(Linux下MySQL库名区分大小写)。

  • 直接验证数据库连接
    抛开Django,在PythonAnywhere的Bash控制台用MySQL命令行测试连接:

    mysql -u <myusername> -h <myusername>.mysql.pythonanywhere-services.com -p <myusername>$<mydatabasename>
    

    输入密码后如果能进入MySQL,说明用户名、密码、数据库名正确,问题出在Django配置加载;如果连不上,就是MySQL端的权限或密码问题,优先解决这个。

  • 确认Django加载的配置正确
    可能存在加载错误settings文件的情况(比如开发/生产配置混淆)。在PythonAnywhere的Web控制台运行以下代码,查看实际生效的配置:

    from django.conf import settings
    print(settings.DATABASES['default'])
    

    检查输出的USER、NAME、PASSWORD是否符合预期,重点确认密码是否正确加载。

  • 排查密码特殊字符问题
    若密码包含@、#、$等特殊字符,直接写在Python字符串里可能需要转义,或确认导入变量时未被截断。可以先改用纯字母数字的简单密码测试,看是否能连接成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:42:36