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

Django 2.0.1连接AWS EC2上MySQL数据库失败求助

解决Django 2.0.1连接EC2上MySQL失败的问题

我来帮你一步步排查这个连接问题,这类故障大多出在网络权限、MySQL配置或者Django依赖环节,咱们逐个击破:

一、先排查EC2安全组的网络权限(最常见坑点)

EC2默认会屏蔽外部对3306端口的访问,这是首要检查项:

  • 登录AWS控制台找到你的EC2实例,进入安全组配置页
  • 添加一条入站规则:
    • 类型选MySQL/Aurora(对应端口3306)
    • 测试阶段可暂时将源地址设为0.0.0.0/0(生产环境务必改成你Django服务器的固定IP)
    • 保存后先试试用本地MySQL客户端(比如Navicat、mysql命令行)连接EC2的MySQL,如果连不上,问题肯定在EC2侧,不用先纠结Django配置。

二、检查MySQL的绑定地址配置

EC2上的MySQL默认可能只绑定了localhost,拒绝外部连接:

  • 登录EC2实例,找到MySQL配置文件(通常是/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf)
  • 找到bind-address行,修改为0.0.0.0(允许所有IP访问)或你的Django服务器公网IP
  • 重启MySQL服务:sudo systemctl restart mysql(Ubuntu/Debian)或sudo service mysqld restart(CentOS)

三、确认MySQL用户的访问权限

你用的root用户默认可能仅允许localhost访问:

  • 登录EC2上的MySQL:mysql -u root -p
  • 执行授权命令:
    GRANT ALL PRIVILEGES ON graph.* TO 'root'@'%' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    
    这里%表示允许任意IP访问root用户,测试阶段可以这么用,生产环境建议创建专属Django用户并限制IP范围。

四、核对Django settings配置细节

你的配置框架没问题,但要注意几个细节:

  • HOST字段务必填EC2的公网IP/弹性IP,不要填hostname(除非你已经做好DNS解析)
  • 确认PASSWORD和EC2上MySQL的root密码完全一致,注意大小写和特殊字符
  • 如果你用的是Python3,必须安装正确的MySQL驱动:pip install mysqlclient(Django2.0.x依赖这个,别用pymysql,容易有兼容问题)

五、测试基础网络连通性

在运行Django的服务器上,用以下命令验证网络:

  • 测试EC2可达性:ping 你的EC2公网IP,看是否能正常响应
  • 测试端口连通:telnet 你的EC2公网IP 3306,如果能连接会显示MySQL的欢迎信息,连不上则说明网络层面有拦截

按这个顺序排查,基本能定位到问题根源,先从网络和MySQL权限入手,这两个是最常见的故障点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:05:57