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

WSL环境下Django连接MySQL出现socket错误的解决咨询

解决WSL中Django连接Windows MySQL的Socket错误

错误原因

你在WSL里运行Django时,程序默认尝试通过Unix Socket文件/var/run/mysqld/mysqld.sock连接MySQL,但你的MySQL是安装并运行在Windows系统上的,WSL无法访问Windows的Unix Socket,所以抛出连接错误。另外,WSL里找不到my.cnf是正常的——因为你没在WSL里装MySQL服务,完全不需要这个文件。

解决步骤

1. 修改Django数据库配置

打开项目根目录下的settings.py,找到DATABASES配置块,调整以下参数:

  • 将HOST从默认的localhost替换成Windows系统的IP地址(获取方式:Windows cmd里执行ipconfig,找到「以太网适配器 WSL」的IPv4地址;或者在WSL终端执行cat /etc/resolv.conf,取nameserver后的IP)
  • 确保PORT设为MySQL默认的3306
  • USER和PASSWORD用你Windows MySQL的正确账号密码

示例配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '你的数据库名',
        'USER': 'mysql用户名',
        'PASSWORD': 'mysql密码',
        'HOST': '192.168.1.105',  # 替换成你的Windows实际IP
        'PORT': '3306',
    }
}

2. 允许Windows MySQL接受远程连接

  • 打开MySQL客户端(比如Workbench),登录root账号,执行授权SQL:
    GRANT ALL PRIVILEGES ON 你的数据库名.* TO 'mysql用户名'@'%' IDENTIFIED BY 'mysql密码';
    FLUSH PRIVILEGES;
    
  • 找到Windows MySQL的配置文件my.ini(通常在C:\ProgramData\MySQL\MySQL Server 8.0路径下,需要显示隐藏文件才能看到),找到bind-address项,改成0.0.0.0(允许所有IP访问)
  • 重启Windows的MySQL服务:打开「服务」应用,找到MySQL80,右键重启

3. 测试连接(可选)

在WSL终端执行以下命令,验证能否直接连接Windows MySQL:

mysql -h 你的WindowsIP -u mysql用户名 -p

如果能成功登录,说明连接配置没问题,再运行python3 manage.py runserver即可正常启动Django。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:40:40