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

Django连接MySQL时出现Access Denied错误,求解决建议

Django连接MySQL时出现Access Denied错误的排查与解决建议

在新建Django项目中替换默认sqlite3为MySQL连接,运行python manage.py runserver时触发Access Denied错误,Django提示用户名或密码错误,但相同账号密码可正常登录MySQL命令行,且Python控制台用pymysql能成功连接。

相关背景

  • 系统:Ubuntu22.04
  • Python版本:3.9
  • 使用pymysql替代mysqlclient,已完成两处配置:
    1. 初始化pymysql(代码放置于项目根目录__init__.py):
      import pymysql                                                                 
      pymysql.version_info=(1,4,3,"final",0)
      pymysql.install_as_MySQLdb()   
      
    2. 在settings.py中配置了MySQL连接信息(对应MySQL命令行及settings.py配置截图)

已验证的测试结果

在Python控制台使用相同连接参数可正常连接MySQL:

>>> import pymysql
>>> conn = pymysql.connect(
...         host='localhost',
...         user='test', 
...         password = "test",
...         db='xxx',
...         )
>>> conn
<pymysql.connections.Connection object at 0x7f065c51ebe0>
>>> cur = conn.cursor()
>>> cur
<pymysql.cursors.Cursor object at 0x7f065ccd0ee0>
>>> cur.execute("select @@version")
1
>>> output = cur.fetchall()
>>> print(output)
(('8.0.32-0ubuntu0.22.04.2',),)
>>> conn.close()

排查与解决建议

  • 检查settings.py连接配置细节:
    • 确认HOST设置为'localhost'而非'127.0.0.1'——MySQL对localhost采用socket连接,127.0.0.1采用TCP/IP连接,两种方式的权限规则可能不同
    • 检查密码是否含特殊字符,在settings.py中是否用引号正确包裹,避免转义导致密码不匹配
    • 确认USER和PASSWORD的大小写与MySQL账号完全匹配(MySQL账号大小写敏感性取决于系统配置)
  • 验证MySQL账号的连接权限:
    登录MySQL命令行,执行以下语句查看账号权限范围:
    SELECT user, host FROM mysql.user WHERE user='test';
    
    若账号test对应的host不包含localhost,执行以下命令授权并刷新权限:
    GRANT ALL PRIVILEGES ON xxx.* TO 'test'@'localhost';
    FLUSH PRIVILEGES;
    
  • 检查pymysql初始化配置:
    确保初始化代码放在项目根目录的__init__.py中,避免Django启动时未加载该配置
    调整pymysql.version_info为实际安装的pymysql版本(可通过pip show pymysql查看Version字段),比如实际版本为1.0.2时,设置为(1,0,2,"final",0)
  • 清除Django缓存:
    执行python manage.py flush清除缓存,或删除项目根目录下的__pycache__文件夹,避免旧配置残留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:52:11