在 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 grep)


Shell 相关基础入门,在 Ubuntu 与 CentOS Shell 中的语法差异总结(bash、dash、sh)


基本流程


1、查看MySQL服务是否启动

sql 复制代码
# 会包含 grep 自己
ps -ef | grep mysql
 
# 排除 grep 自己,结果更干净
ps -ef | grep mysql | grep -v grep

2、检查 MySQL 是否安装

sql 复制代码
# 检查是否安装了 mysql 包
dpkg -l | grep mysql        # Ubuntu/Debian
rpm -qa | grep mysql        # CentOS/RHEL
 
# 或者找 mysql 相关文件
which mysql
ls /usr/sbin/mysqld

3、如果没有安装,去安装

sql 复制代码
# Ubuntu/Debian
sudo apt update && sudo apt install mysql-server -y

在 WSL 中下载安装 MySQL,连接到 SQLyog


sudo apt update && sudo apt install mysql-server -y


sudo apt ... 在哪里执行,对目录有要求吗,是在根目录执行吗


没有任何目录要求,在任何目录下执行都可以。


为什么没有目录要求?

apt updateapt install系统级命令,它们操作的是:

  • /etc/apt/sources.list(软件源配置)

  • /var/cache/apt/(下载的包缓存)

  • /usr/bin//usr/lib/(安装目标位置)

这些路径都是绝对路径,跟你当前在哪个目录无关。

bash 复制代码
# 以下任何一种都可以
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

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已安装


好的,你现在的情况是:

  • ✅ Ubuntu(WSL)里已经通过 sudo apt install mysql-server -y 装好了 MySQL 服务端

  • ✅ Windows 宿主机上已经有 SQLyog(或 SQLyog 13.1.8)


核心一句话

👉 WSL 里的 MySQL 不能被 Windows 里的 SQLyog 直接通过 localhost127.0.0.1 连接


下面给你 最稳、最简单 的后续步骤,按顺序做即可。


一、先确认 WSL 里的 MySQL 是否正常

在 WSL Ubuntu 中执行:

bash

bash 复制代码
# 1. 查看 MySQL 服务状态
sudo systemctl status mysql

# 2. 如果未启动(常见于 WSL)
sudo service mysql start

# 3. 登录测试
sudo mysql

如果出现 MySQL 命令行(mysql>),说明安装成功。


二、给 SQLyog 连 WSL MySQL 做两件事

1)在 WSL 中创建远程可用用户(重要)

MySQL 默认只允许 root@localhost,不允许外部连。

bash

bash 复制代码
sudo mysql

# 在 mysql> 下执行
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

密码 123456 仅示例,你可改

2)查找 WSL 的 Windows 访问 IP

WSL 在 Windows 里不是 127.0.0.1,而是另一套虚拟 IP。

Windows CMD / PowerShell 中执行:

bash

bash 复制代码
wsl hostname -I

会输出类似:

text

复制代码
172.23.45.67

这个 IP 就是 SQLyog 要连的地址。


三、SQLyog 连接配置(重点)

打开 SQLyog,填写:

字段
Name WSL-MySQL
Host 172.23.x.x(上面拿到的 IP)
User root
Password 123456
Port 3306

四、如果连不上(95% 的人会遇到)

检查 1:WSL 中 MySQL 端口是否监听

bash

复制代码
sudo netstat -tlnp | grep 3306

应该显示 0.0.0.0:3306*:3306,不能只有 127.0.0.1:3306

检查 2:防火墙(一般 WSL 不需要关)

Windows 防火墙临时测试可以先关,通了再开。


五、一句话总结你现在要做的

  1. ✅ WSL:sudo service mysql start

  2. ✅ WSL:建 root@'%' 用户

  3. ✅ Windows:wsl hostname -I 拿 IP

  4. ✅ SQLyog:用 这个 IP ,不用 localhost

如果你愿意,下一步我可以帮你:

  • 把 WSL MySQL 变成 Windows 可直接用 localhost 访问

  • 或帮你把这个 MySQL 配置成标准开发环境(无脑通)


bash 复制代码
mumu@MuJinqiu:~$ 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 (code=exited, 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 里创建允许远程连接的账号(必须做)

bash

bash 复制代码
sudo mysql

然后在 mysql> 提示符下执行:

sql

sql 复制代码
CREATE 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 里):

bash

bash 复制代码
wsl hostname -I

会输出类似:

text

复制代码
172.23.45.67

这串 IP 就是 SQLyog 要填的 主机地址


三、SQLyog 连接配置

字段
Name 随意,比如 WSL-MySQL
Host 上面拿到的 172.23.x.x
User root
Password 123456(和你设置的一致)
Port 3306

四、如果连不上(大概率是端口绑定问题)

在 WSL 里执行:

bash

bash 复制代码
sudo netstat -tlnp | grep 3306
  • ✅ 正确结果:0.0.0.0:3306*:3306

  • ❌ 错误结果:只有 127.0.0.1:3306

如果是后者(只有 127.0.0.1),需要修改配置文件:

bash

bash 复制代码
sudo sed -i 's/^bind-address\s*=.*/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
sudo systemctl restart mysql

总结你现在要做的

  1. ✅ 已确认 MySQL 运行中

  2. ✅ 创建 root@'%' 账号

  3. ✅ 在 Windows 用 wsl hostname -I 拿 IP

  4. ✅ SQLyog 用这个 IP 连接

连上之后,你就可以正常建库、建表、做作业了。


如果还是连不通,把你 netstat 的结果贴出来,我帮你继续看。


上一步的界面我怎么退出来,好像不能输入?


你看到的界面是 systemctl status mysql分页查看模式 (实际调用了 less 命令),不是卡住了。


退出方法

按键 效果
q ✅ 直接退出,回到命令提示符
Ctrl + C 也可以退出(不如 q 标准)

直接按键盘上的 q 键就行 ,不需要按 Ctrl 或其他组合键。


为什么会这样?

systemctl status 输出内容超过一屏时,会自动进入分页模式(类似 less 命令),底部会出现:

text

复制代码
lines 1-14/14 (END)

这时候:

  • q → 退出

  • / / 空格 → 上下翻页

  • /关键词 → 搜索


你现在的情况

刚才已经按 q 退出了吗?如果还在里面,按一下 q 就能回到:

bash

复制代码
mumu@MuJinqiu:~$

然后继续执行后面的 sudo mysql 命令。


SQLyog 连接报错



bash 复制代码
mumu@MuJinqiu:~$ sudo netstat -tlnp | grep 3306 sudo: netstat: command not found mumu@MuJinqiu:~$

问题出在 WSL 里没有 netstat 命令 ,而且 SQLyog 连不上 MySQL


一、先解决 netstat: command not found

在 WSL 里执行以下命令安装 netstat

bash

bash 复制代码
sudo apt update
sudo apt install net-tools -y

安装完成后,重新执行:

bash

bash 复制代码
sudo netstat -tlnp | grep 3306

二、很可能出现的两种结果及解决办法

情况 A:只显示 127.0.0.1:3306(最常见)

text

复制代码
tcp  0  0  127.0.0.1:3306  0.0.0.0:*  LISTEN  659546/mysqld

原因:MySQL 只允许本机连接,不允许外部(SQLyog)连接。

解决办法:修改配置文件

bash

bash 复制代码
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到这一行:

text

bash 复制代码
bind-address = 127.0.0.1

改成:

text

bash 复制代码
bind-address = 0.0.0.0

保存(Ctrl+O,回车,Ctrl+X),然后重启 MySQL:

bash

bash 复制代码
sudo systemctl restart mysql

情况 B:显示 0.0.0.0:3306*:3306

text

复制代码
tcp  0  0  0.0.0.0:3306  0.0.0.0:*  LISTEN  659546/mysqld

说明 MySQL 配置没问题,问题在别处,继续往下看。


三、检查 SQLyog 连接问题

1. 确认 WSL 的 IP 地址

在 Windows CMD 中执行:

bash

bash 复制代码
wsl hostname -I

你之前拿到的是 172.18.230.242,这个 IP 可能会变,每次连接前最好确认一下。

2. 测试 IP 是否通

在 Windows CMD 中执行:

bash

bash 复制代码
ping 172.18.230.242
  • ✅ 能 ping 通 → 网络正常

  • ❌ 超时 → WSL 网络有问题,可能需要重启 WSL

3. 测试 MySQL 端口是否通

在 Windows CMD 中执行:

bash

bash 复制代码
telnet 172.18.230.242 3306
  • ✅ 屏幕变黑或显示乱码 → 端口通

  • ❌ 连接失败 → 端口不通

如果 telnet 不是内部命令,先安装:控制面板 → 启用或关闭 Windows 功能 → 勾选 Telnet Client


五、你现在应该做的(按顺序)

bash

bash 复制代码
# 1. 安装 netstat
sudo apt install net-tools -y

# 2. 查看 MySQL 监听地址
sudo netstat -tlnp | grep 3306

# 3. 把输出贴出来,我帮你判断下一步

netstat 的输出发给我,我就能确定是改配置、做端口转发,还是其他问题。


bash 复制代码
mumu@MuJinqiu:~$ sudo netstat -tlnp | grep 3306
sudo: netstat: command not found
mumu@MuJinqiu:~$ 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) ...
mumu@MuJinqiu:~$ 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   
mumu@MuJinqiu:~$

现在问题非常清晰了。


问题诊断

从输出可以看到:

text

复制代码
tcp  0  0  127.0.0.1:3306   0.0.0.0:*   LISTEN   659546/mysqld

MySQL 只监听了 127.0.0.1(本机),没有监听 0.0.0.0(所有网络接口)

这就是 SQLyog 连不上的原因:Windows 无法通过 WSL 的 IP 访问 MySQL。


解决方案:修改 MySQL 配置文件

第一步:编辑配置文件

bash

bash 复制代码
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

第二步:找到并修改 bind-address

使用方向键找到这一行:

text

复制代码
bind-address = 127.0.0.1

改成:

text

复制代码
bind-address = 0.0.0.0

第三步:保存并退出

  • Ctrl + O(保存)

  • Enter(确认)

  • Ctrl + X(退出)

第四步:重启 MySQL

bash

bash 复制代码
sudo systemctl restart mysql

第五步:验证修改成功

bash

bash 复制代码
sudo netstat -tlnp | grep 3306

现在应该显示:

text

复制代码
tcp  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 的当前 IP)

  • Userroot

  • Password123456(或其他你设置的密码)

  • Port3306

点击测试连接,应该就能成功了。


MySQL 安装在 WSL vs Windows 本地对比

对比维度 WSL 中安装 MySQL Windows 本地安装 MySQL
安装命令 sudo apt install mysql-server -y 下载 MSI 安装包,图形化点击安装
安装难度 ⭐ 简单(一行命令) ⭐⭐ 中等(需要下载、配置、选选项)
启动方式 sudo service mysql startsudo systemctl start mysql Windows 服务自动启动,或 net start MySQL
停止方式 sudo service mysql stop net stop MySQL 或服务管理器
默认数据目录 /var/lib/mysql C:\ProgramData\MySQL\MySQL Server X.X\Data
配置文件位置 /etc/mysql/mysql.conf.d/mysqld.cnf C:\ProgramData\MySQL\MySQL Server X.X\my.ini
默认监听地址 127.0.0.1(仅本机) 0.0.0.0(所有接口)
默认允许远程连接 ❌ 不允许(需手动改 bind-address ✅ 允许(但需要创建远程用户)
默认 root 密码 无密码(sudo mysql 直接登录) 安装时让你设置
客户端连接(本地) sudo mysqlmysql -u root -p mysql -u root -p
客户端连接(外部,如 SQLyog) 需要改 bind-address=0.0.0.0 + 创建 root@'%' 用户 需要创建 root@'%' 用户(一般已允许)
连接地址(外部工具) WSL 的 IP(如 172.18.x.x),不是 127.0.0.1 127.0.0.1localhost
随系统自启动 默认是 enabled,但 WSL 关机需要手动启动 ✅ 默认 Windows 服务自启动
资源占用 较低(WSL 轻量) 较高(Windows 服务开销)
与 Windows 工具兼容性 需要知道 WSL IP,端口转发较麻烦 完美兼容,直接 localhost
适合场景 学习 Linux、开发环境隔离、不常重启电脑 生产开发、需要稳定服务、频繁使用 GUI 工具

核心区别速记

你最关心的问题 WSL MySQL Windows MySQL
SQLyog 能不能连 ✅ 能,但要填 WSL IP ✅ 能,填 localhost
每次开机要重新启动吗 ⚠️ 每次 WSL 启动要 sudo service mysql start ❌ 不用,Windows 服务自动跑
配置文件在哪 Linux 路径(/etc/mysql/... Windows 路径(C:\ProgramData\...
root 密码是什么 默认空(用 sudo mysql 登录) 安装时设置的密码

一句话总结

WSL 的 MySQL 是"藏在 Linux 里的数据库",Windows 工具连它需要走 WSL 的虚拟 IP;


Windows 本地的 MySQL 是"亲儿子",直接 localhost 就能连。

相关推荐
それども9 小时前
怎么理解 LEFT JOIN 和 LEFT SEMI JOIN
java·数据库·mysql
Java成神之路-9 小时前
MySQL 索引跳跃扫描(Index Skip Scan)
mysql
jran-10 小时前
MySQL 用户与权限
数据库·mysql
無限進步D10 小时前
MySQL 排序与分页
数据库·mysql
唐青枫11 小时前
别只会写 IF:MySQL CASE WHEN 条件判断实战详解
sql·mysql
zhishijike13 小时前
全国行政区划sql(省市区)
数据库·sql·mysql
早川91913 小时前
Hbase、MySQL和Redis区别
redis·mysql·hbase
再战300年13 小时前
通过docker实现mysql一主多从
mysql·docker·容器
Irene199114 小时前
(课堂笔记)MySQL 基础(对比 Oracle 学习)
mysql·oracle