Win10 Ubuntu终端MySQL无法运行 报ERROR2002(13)如何修复
WSL Ubuntu 环境 MySQL 2002 (sock 13) 错误修复步骤
错误码13对应权限拒绝,不是sock文件缺失类问题,核心诱因是WSL默认不启动系统服务、临时运行目录被清空、权限配置不匹配,按以下顺序排查修复:
第一步:手动启动MySQL服务
WSL默认未启用systemd,不会自动启动安装的系统服务,先执行启动命令:sudo service mysql start若返回启动成功提示,直接重新执行
mysql -u root -p测试连接即可;若启动失败,直接跳至第三步查看错误日志定位根因。第二步:修复sock目录权限
服务启动后仍报错的话,先检查mysqld运行目录配置:
执行ls -ld /var/run/mysqld查看目录状态,正常情况该目录属主、属组均为mysql,权限位为755。不符合配置的话执行以下命令修复:# 目录不存在则先创建 sudo mkdir -p /var/run/mysqld # 修正属主属组 sudo chown mysql:mysql /var/run/mysqld # 修正目录权限 sudo chmod 755 /var/run/mysqld # 重启服务生效 sudo service mysql restartWSL每次重启后会清空
/var/run下的临时文件,若每次打开终端都需要重新创建目录,可以把创建目录、赋权、启动服务的命令追加到~/.bashrc文件末尾,实现打开终端自动初始化。第三步:通过日志排查启动失败问题
服务无法启动时直接读取MySQL错误日志定位具体问题:sudo cat /var/log/mysql/error.logWSL环境下最常见的两类启动失败原因处理:
- 数据目录初始化失败:执行
sudo mysqld --initialize重新初始化数据目录,初始化生成的临时root密码会直接打印在日志中 - AppArmor权限拦截:WSL对AppArmor的支持存在兼容问题,执行
sudo service apparmor stop关闭服务后再重启MySQL即可
- 数据目录初始化失败:执行
第四步:绕过sock文件验证服务可用性
上述步骤未定位到问题时,可以强制走TCP协议连接本地服务,绕过sock文件校验:mysql -u root -p -h 127.0.0.1 --protocol=tcp如果该命令能正常连接,说明问题完全出在sock配置上,打开
/etc/mysql/mysql.conf.d/mysqld.cnf检查socket配置项,确认路径与客户端报错中读取的/var/run/mysqld/mysqld.sock一致即可。
内容的提问来源于stack exchange,提问作者Prasant Pant
相关产品推荐
相关产品推荐

