在 WSL 中下载安装 MySQL,连接到 SQLyog(MySQL 安装在 WSL vs Windows 本地对比)

在 WSL 中下载安装 MySQL,连接到 SQLyog(MySQL 安装在 WSL vs Windows 本地对比) 本文详细介绍了在Linux系统中检查MySQL服务状态的方法包括使用ps -ef | grep mysql命令和排除grep进程的优化版本。同时提供了MySQL安装验证和WSL环境下的配置指南重点解决SQLyog连接WSL中MySQL的问题。关键步骤包括修改MySQL配置文件中的bind-address为0.0.0.0、创建远程访问用户、获取WSL的IP地址并通过端口转发实现Windows宿主机的连接。文章还解决了常见错误如netstat命令未找到和连接失败问题提供了完整的故障排查流程和解决方案。关联阅读推荐在 Linux 中查看服务是否启动ps -ef | grep mysql | grep -v grepShell 相关基础入门在 Ubuntu 与 CentOS Shell 中的语法差异总结bash、dash、sh基本流程1、查看MySQL服务是否启动# 会包含 grep 自己 ps -ef | grep mysql # 排除 grep 自己结果更干净 ps -ef | grep mysql | grep -v grep2、检查 MySQL 是否安装# 检查是否安装了 mysql 包 dpkg -l | grep mysql # Ubuntu/Debian rpm -qa | grep mysql # CentOS/RHEL # 或者找 mysql 相关文件 which mysql ls /usr/sbin/mysqld3、如果没有安装去安装# Ubuntu/Debian sudo apt update sudo apt install mysql-server -y在 WSL 中下载安装 MySQL连接到 SQLyogsudo apt update sudo apt install mysql-server -ysudo apt ... 在哪里执行对目录有要求吗是在根目录执行吗没有任何目录要求在任何目录下执行都可以。为什么没有目录要求apt update和apt install是系统级命令它们操作的是/etc/apt/sources.list软件源配置/var/cache/apt/下载的包缓存/usr/bin/、/usr/lib/安装目标位置这些路径都是绝对路径跟你当前在哪个目录无关。# 以下任何一种都可以 cd /home/mumu sudo apt install mysql-server # ✅ cd /etc sudo apt install mysql-server # ✅ cd /tmp/xxx/yyy/zzz sudo apt install mysql-server # ✅ cd ~ sudo apt install mysql-server # ✅类比理解命令是否依赖当前目录原因ls✅ 依赖默认列出当前目录内容cd✅ 依赖切换当前目录本身cp file1 file2✅ 依赖路径需要相对于当前目录apt install❌ 不依赖操作的是系统固定路径systemctl start mysql❌ 不依赖操作的是系统服务chmod 755 /etc/hosts❌ 不依赖用的是绝对路径唯一要注意的虽然可以在任何目录执行但命令中如果有相对路径就需要注意bash# ✅ 安全没有路径依赖 sudo apt install mysql-server # ⚠️ 依赖当前目录会去当前目录找 my.deb 文件 sudo apt install ./my.deb # ⚠️ 依赖当前目录会去找当前目录的 sources.list sudo apt update -c ./my-sources.list执行完后MySQL 会安装到系统的标准位置配置文件/etc/mysql/数据目录/var/lib/mysql/命令/usr/bin/mysql跟你在哪个目录执行的没有任何关系。总结一句话sudo apt install在任何目录都能执行它安装的是系统级软件不依赖当前目录。sudo apt update sudo apt install mysql-server -y 执行完之后怎么做SQLyog_13.1.8已安装好的你现在的情况是✅ UbuntuWSL里已经通过sudo apt install mysql-server -y装好了 MySQL 服务端✅ Windows 宿主机上已经有 SQLyog或 SQLyog 13.1.8核心一句话WSL 里的 MySQL 不能被 Windows 里的 SQLyog 直接通过localhost或127.0.0.1连接下面给你最稳、最简单的后续步骤按顺序做即可。一、先确认 WSL 里的 MySQL 是否正常在 WSL Ubuntu 中执行bash# 1. 查看 MySQL 服务状态 sudo systemctl status mysql # 2. 如果未启动常见于 WSL sudo service mysql start # 3. 登录测试 sudo mysql如果出现 MySQL 命令行mysql说明安装成功。二、给 SQLyog 连 WSL MySQL 做两件事1在 WSL 中创建远程可用用户重要MySQL 默认只允许rootlocalhost不允许外部连。bashsudo mysql # 在 mysql 下执行 CREATE USER root% IDENTIFIED BY 123456; GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT;密码123456仅示例你可改2查找 WSL 的 Windows 访问 IPWSL 在 Windows 里不是127.0.0.1而是另一套虚拟 IP。在Windows CMD / PowerShell中执行bashwsl hostname -I会输出类似text172.23.45.67这个 IP 就是 SQLyog 要连的地址。三、SQLyog 连接配置重点打开 SQLyog填写字段值NameWSL-MySQLHost172.23.x.x上面拿到的 IPUserrootPassword123456Port3306四、如果连不上95% 的人会遇到检查 1WSL 中 MySQL 端口是否监听bashsudo netstat -tlnp | grep 3306应该显示0.0.0.0:3306或*:3306不能只有127.0.0.1:3306检查 2防火墙一般 WSL 不需要关Windows 防火墙临时测试可以先关通了再开。五、一句话总结你现在要做的✅ WSLsudo service mysql start✅ WSL建root%用户✅ Windowswsl hostname -I拿 IP✅ SQLyog用这个 IP不用localhost如果你愿意下一步我可以帮你把 WSL MySQL变成 Windows 可直接用localhost访问或帮你把这个 MySQL配置成标准开发环境无脑通mumuMuJinqiu:~$ sudo systemctl status mysql ● mysql.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled) Active: active (running) since Mon 2026-05-18 14:04:52 CST; 3min 0s ago Process: 659537 ExecStartPre/usr/share/mysql/mysql-systemd-start pre (codeexited, status Main PID: 659546 (mysqld) Status: Server is operational Tasks: 37 (limit: 19181) Memory: 351.4M (peak: 378.6M) CPU: 1.394s CGroup: /system.slice/mysql.service └─659546 /usr/sbin/mysqld May 18 14:04:51 MuJinqiu systemd[1]: Starting mysql.service - MySQL Community Server... May 18 14:04:52 MuJinqiu systemd[1]: Started mysql.service - MySQL Community Server. lines 1-14/14 (END)很好你的 MySQL 服务已经完全正常了Active: active (running)这步没问题。接下来你就做两件事就能用 SQLyog 连上了。一、在 WSL 里创建允许远程连接的账号必须做bashsudo mysql然后在mysql提示符下执行sqlCREATE USER root% IDENTIFIED BY 123456; GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT;密码123456只是示例你也可以改成自己记得住的。二、拿到 WSL 在 Windows 里的 IP 地址在 Windows 的 CMD 或 PowerShell 里执行不是在 WSL 里bashwsl hostname -I会输出类似text172.23.45.67这串 IP 就是 SQLyog 要填的主机地址。三、SQLyog 连接配置字段值Name随意比如WSL-MySQLHost上面拿到的172.23.x.xUserrootPassword123456和你设置的一致Port3306四、如果连不上大概率是端口绑定问题在 WSL 里执行bashsudo netstat -tlnp | grep 3306✅ 正确结果0.0.0.0:3306或*:3306❌ 错误结果只有127.0.0.1:3306如果是后者只有 127.0.0.1需要修改配置文件bashsudo sed -i s/^bind-address\s*.*/bind-address 0.0.0.0/ /etc/mysql/mysql.conf.d/mysqld.cnf sudo systemctl restart mysql总结你现在要做的✅ 已确认 MySQL 运行中✅ 创建root%账号✅ 在 Windows 用wsl hostname -I拿 IP✅ SQLyog 用这个 IP 连接连上之后你就可以正常建库、建表、做作业了。如果还是连不通把你netstat的结果贴出来我帮你继续看。上一步的界面我怎么退出来好像不能输入你看到的界面是systemctl status mysql的分页查看模式实际调用了less命令不是卡住了。退出方法按键效果按q✅ 直接退出回到命令提示符按Ctrl C也可以退出不如q标准直接按键盘上的q键就行不需要按Ctrl或其他组合键。为什么会这样systemctl status输出内容超过一屏时会自动进入分页模式类似less命令底部会出现textlines 1-14/14 (END)这时候按q→ 退出按↑/↓/空格→ 上下翻页按/关键词→ 搜索你现在的情况刚才已经按q退出了吗如果还在里面按一下q就能回到bashmumuMuJinqiu:~$然后继续执行后面的sudo mysql命令。SQLyog 连接报错mumuMuJinqiu:~$ sudo netstat -tlnp | grep 3306 sudo: netstat: command not found mumuMuJinqiu:~$问题出在WSL 里没有netstat命令而且SQLyog 连不上 MySQL。一、先解决netstat: command not found在 WSL 里执行以下命令安装netstatbashsudo apt update sudo apt install net-tools -y安装完成后重新执行bashsudo netstat -tlnp | grep 3306二、很可能出现的两种结果及解决办法情况 A只显示127.0.0.1:3306最常见texttcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 659546/mysqld原因MySQL 只允许本机连接不允许外部SQLyog连接。解决办法修改配置文件bashsudo nano /etc/mysql/mysql.conf.d/mysqld.cnf找到这一行textbind-address 127.0.0.1改成textbind-address 0.0.0.0保存CtrlO回车CtrlX然后重启 MySQLbashsudo systemctl restart mysql情况 B显示0.0.0.0:3306或*:3306texttcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 659546/mysqld说明 MySQL 配置没问题问题在别处继续往下看。三、检查 SQLyog 连接问题1. 确认 WSL 的 IP 地址在 Windows CMD 中执行bashwsl hostname -I你之前拿到的是172.18.230.242这个 IP 可能会变每次连接前最好确认一下。2. 测试 IP 是否通在 Windows CMD 中执行bashping 172.18.230.242✅ 能 ping 通 → 网络正常❌ 超时 → WSL 网络有问题可能需要重启 WSL3. 测试 MySQL 端口是否通在 Windows CMD 中执行bashtelnet 172.18.230.242 3306✅ 屏幕变黑或显示乱码 → 端口通❌ 连接失败 → 端口不通如果telnet不是内部命令先安装控制面板 → 启用或关闭 Windows 功能 → 勾选 Telnet Client五、你现在应该做的按顺序bash# 1. 安装 netstat sudo apt install net-tools -y # 2. 查看 MySQL 监听地址 sudo netstat -tlnp | grep 3306 # 3. 把输出贴出来我帮你判断下一步把netstat的输出发给我我就能确定是改配置、做端口转发还是其他问题。mumuMuJinqiu:~$ sudo netstat -tlnp | grep 3306 sudo: netstat: command not found mumuMuJinqiu:~$ sudo apt update sudo apt install net-tools -y Hit:1 http://security.ubuntu.com/ubuntu noble-security InRelease Hit:2 http://archive.ubuntu.com/ubuntu noble InRelease Hit:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease Hit:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease Reading package lists... Done Building dependency tree... Done Reading state information... Done 59 packages can be upgraded. Run apt list --upgradable to see them. Reading package lists... Done Building dependency tree... Done Reading state information... Done The following packages were automatically installed and are no longer required: libllvm19 zsh-common Use sudo apt autoremove to remove them. The following NEW packages will be installed: net-tools 0 upgraded, 1 newly installed, 0 to remove and 59 not upgraded. Need to get 204 kB of archives. After this operation, 811 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 net-tools amd64 2.10-0.1ubuntu4.4 [204 kB] Fetched 204 kB in 1s (146 kB/s) Selecting previously unselected package net-tools. (Reading database ... 47874 files and directories currently installed.) Preparing to unpack .../net-tools_2.10-0.1ubuntu4.4_amd64.deb ... Unpacking net-tools (2.10-0.1ubuntu4.4) ... Setting up net-tools (2.10-0.1ubuntu4.4) ... Processing triggers for man-db (2.12.0-4build2) ... mumuMuJinqiu:~$ sudo netstat -tlnp | grep 3306 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 659546/mysqld tcp 0 0 127.0.0.1:33060 0.0.0.0:* LISTEN 659546/mysqld mumuMuJinqiu:~$现在问题非常清晰了。问题诊断从输出可以看到texttcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 659546/mysqldMySQL 只监听了127.0.0.1本机没有监听0.0.0.0所有网络接口这就是 SQLyog 连不上的原因Windows 无法通过 WSL 的 IP 访问 MySQL。解决方案修改 MySQL 配置文件第一步编辑配置文件bashsudo nano /etc/mysql/mysql.conf.d/mysqld.cnf第二步找到并修改bind-address使用方向键找到这一行textbind-address 127.0.0.1改成textbind-address 0.0.0.0第三步保存并退出Ctrl O保存Enter确认Ctrl X退出第四步重启 MySQLbashsudo systemctl restart mysql第五步验证修改成功bashsudo netstat -tlnp | grep 3306现在应该显示texttcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 659546/mysqld✅ 看到0.0.0.0:3306就成功了然后重新用 SQLyog 连接SQLyog 配置不变Host172.18.230.242或你 WSL 的当前 IPUserrootPassword123456或其他你设置的密码Port3306点击测试连接应该就能成功了。MySQL 安装在 WSL vs Windows 本地对比对比维度WSL 中安装 MySQLWindows 本地安装 MySQL安装命令sudo apt install mysql-server -y下载 MSI 安装包图形化点击安装安装难度⭐ 简单一行命令⭐⭐ 中等需要下载、配置、选选项启动方式sudo service mysql start或sudo systemctl start mysqlWindows 服务自动启动或net start MySQL停止方式sudo service mysql stopnet stop MySQL或服务管理器默认数据目录/var/lib/mysqlC:\ProgramData\MySQL\MySQL Server X.X\Data配置文件位置/etc/mysql/mysql.conf.d/mysqld.cnfC:\ProgramData\MySQL\MySQL Server X.X\my.ini默认监听地址127.0.0.1仅本机0.0.0.0所有接口默认允许远程连接❌ 不允许需手动改bind-address✅ 允许但需要创建远程用户默认 root 密码无密码sudo mysql直接登录安装时让你设置客户端连接本地sudo mysql或mysql -u root -pmysql -u root -p客户端连接外部如 SQLyog需要改bind-address0.0.0.0 创建root%用户需要创建root%用户一般已允许连接地址外部工具WSL 的 IP如172.18.x.x不是127.0.0.1127.0.0.1或localhost随系统自启动默认是enabled但 WSL 关机需要手动启动✅ 默认 Windows 服务自启动资源占用较低WSL 轻量较高Windows 服务开销与 Windows 工具兼容性需要知道 WSL IP端口转发较麻烦完美兼容直接localhost适合场景学习 Linux、开发环境隔离、不常重启电脑生产开发、需要稳定服务、频繁使用 GUI 工具核心区别速记你最关心的问题WSL MySQLWindows MySQLSQLyog 能不能连✅ 能但要填 WSL IP✅ 能填localhost每次开机要重新启动吗⚠️ 每次 WSL 启动要sudo service mysql start❌ 不用Windows 服务自动跑配置文件在哪Linux 路径/etc/mysql/...Windows 路径C:\ProgramData\...root 密码是什么默认空用sudo mysql登录安装时设置的密码一句话总结WSL 的 MySQL 是“藏在 Linux 里的数据库”Windows 工具连它需要走 WSL 的虚拟 IPWindows 本地的 MySQL 是“亲儿子”直接localhost就能连。