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

Django切换至MySQL后出现连接被拒绝问题求助

排查Django切换MySQL后ERR_CONNECTION_REFUSED的问题

刚上手第一个Django项目就碰到数据库切换的坑,太闹心了!ERR_CONNECTION_REFUSED本质是连接层面的失败,咱们一步步拆解排查:

1. 先确认MySQL服务是不是在运行

这是最容易忽略的点!

  • Windows:打开「服务」列表(Win+R输入services.msc),找到MySQL服务,看状态是不是「正在运行」,没运行的话右键启动它。
  • Linux:在终端执行sudo systemctl status mysql,如果显示inactive,就用sudo systemctl start mysql启动。
  • Mac:如果是brew安装的,执行brew services list看状态,启动用brew services start mysql;如果是手动安装的,用mysql.server start。

2. 检查数据库HOST配置是否正确

你配置里写的'HOST': '12...'看起来没写完?

  • 如果是本地MySQL,优先用'localhost'或者'127.0.0.1'(两者有区别:localhost用Unix socket,127.0.0.1用TCP/IP,有时候换一下就能解决)。
  • 如果是远程MySQL,要确认IP地址完全正确,而且远程服务器的MySQL允许外部连接。

3. 确认MySQL端口是否匹配(默认3306)

Django默认用3306端口连接MySQL,如果你的MySQL修改过端口,必须在settings里加上'PORT': '你的端口号'(比如'PORT': '3307')。
可以用终端测试端口是否通:telnet 127.0.0.1 3306(替换成你的HOST和端口),如果连接失败,说明端口不对或者被挡住了。

4. 验证数据库用户的连接权限

即使用户名密码正确,用户也可能没有从当前主机连接数据库的权限:

  1. 登录MySQL控制台:mysql -u root -p
  2. 执行授权命令(替换成你的db_name、user、主机IP):
    GRANT ALL PRIVILEGES ON db_name.* TO 'user'@'你的本地IP' IDENTIFIED BY 'password';
    
    如果是本地测试,主机可以用'%'(允许所有主机连接,注意生产环境别这么用),或者'localhost'。
  3. 刷新权限:FLUSH PRIVILEGES;

5. 确保MySQL客户端依赖安装正确

Django连接MySQL需要对应的客户端库,没装的话会悄悄失败:

  • 优先安装mysqlclient:pip install mysqlclient(Windows如果装不上,可能需要先装Visual Studio Build Tools,或者用下面的替代方案)。
  • 替代方案:安装pymysql,然后在项目根目录的__init__.py里添加两行代码:
    import pymysql
    pymysql.install_as_MySQLdb()
    

6. 查看Django的控制台日志

浏览器只显示连接拒绝,但Django的运行日志里肯定有更详细的错误!
重新启动Django:python manage.py runserver,仔细看终端输出,比如有没有Access denied for user、Can't connect to MySQL server这类提示,这些信息能直接定位问题。

7. 排查防火墙/安全组限制

  • 如果是远程MySQL:确认服务器的防火墙(比如Linux的ufw/iptables)或者云服务商的安全组,已经开放了3306端口,并且允许你的本地IP访问。
  • 如果是本地MySQL:检查Windows防火墙或者Linux的防火墙,有没有拦截3306端口的入站/出站请求。

先从这些点逐一排查,大概率能找到问题所在!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:25:49