Windows10 Ubuntu子系统中Django连接XAMPP MySQL遭拒绝
解决WSL中Django连接XAMPP MySQL的2003连接拒绝问题
核心原因
WSL的127.0.0.1是子系统自身的回环地址,和Windows主机的回环不是同一个,直接连本地回环会失败。
解决步骤
修改MySQL绑定地址
打开XAMPP控制面板,点击MySQL的Config按钮,选择my.ini文件:- 找到
bind-address = 127.0.0.1这一行,改成bind-address = 0.0.0.0(允许所有IP访问),或者直接注释掉这行。 - 保存后重启XAMPP的MySQL服务。
- 找到
创建允许跨IP访问的MySQL用户
用XAMPP自带的phpMyAdmin登录,或者在Windows的CMD里执行mysql -u root -p登录MySQL,然后执行以下命令:-- 替换your_user、your_password、your_database为你的实际信息 CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'%'; FLUSH PRIVILEGES;这里的
%表示允许该用户从任何IP访问MySQL,也可以指定WSL的具体IP(更安全)。获取Windows主机的内网IP
在Windows的CMD里执行ipconfig,找到以太网适配器 WSL或者本地连接的IPv4地址,比如192.168.1.100。修改Django数据库配置
打开项目的settings.py,找到DATABASES配置块,把HOST的值从'127.0.0.1'改成刚才获取的Windows内网IP,保持PORT为3306:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database', 'USER': 'your_user', 'PASSWORD': 'your_password', 'HOST': '192.168.1.100', # 替换成你的Windows内网IP 'PORT': '3306', } }检查Windows防火墙
确保Windows防火墙允许MySQL的3306端口入站:- 打开Windows Defender防火墙,进入
高级设置,添加一条入站规则,允许TCP端口3306的连接。
- 打开Windows Defender防火墙,进入
内容的提问来源于stack exchange,提问作者amofogh
相关产品推荐
相关产品推荐

