本文详细介绍了在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)
基本流程
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 update 和 apt 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 直接通过 localhost 或 127.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 防火墙临时测试可以先关,通了再开。
五、一句话总结你现在要做的
-
✅ WSL:
sudo service mysql start -
✅ WSL:建
root@'%'用户 -
✅ Windows:
wsl hostname -I拿 IP -
✅ 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
总结你现在要做的
-
✅ 已确认 MySQL 运行中
-
✅ 创建
root@'%'账号 -
✅ 在 Windows 用
wsl hostname -I拿 IP -
✅ 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 配置不变:
-
Host :
172.18.230.242(或你 WSL 的当前 IP) -
User :
root -
Password :
123456(或其他你设置的密码) -
Port :
3306
点击测试连接,应该就能成功了。
MySQL 安装在 WSL vs Windows 本地对比
| 对比维度 | WSL 中安装 MySQL | Windows 本地安装 MySQL |
|---|---|---|
| 安装命令 | sudo apt install mysql-server -y |
下载 MSI 安装包,图形化点击安装 |
| 安装难度 | ⭐ 简单(一行命令) | ⭐⭐ 中等(需要下载、配置、选选项) |
| 启动方式 | sudo service mysql start 或 sudo 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 mysql 或 mysql -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.1 或 localhost |
| 随系统自启动 | 默认是 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就能连。