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
相关产品推荐
相关产品推荐

