MySQL端口修改须编辑my.ini(Windows)或my.cnf(Linux/macOS)中[mysqld]段的port=3307(纯数字),重启服务后还需同步更新客户端连接参数、防火墙及phpMyAdmin等配置。

phpEnv里改MySQL端口必须改配置文件,不是点几下就能生效
phpEnv本身不提供图形化“修改MySQL端口”的入口,所有端口调整都依赖底层MySQL配置文件。它打包的是标准MySQL服务(如5.7或8.0),所以改法和原生MySQL完全一致——改my.ini(Windows)或my.cnf(Linux/macOS模拟环境),且必须在[mysqld]段落内写port = 3307这类纯数字赋值。
常见错误包括:把port写在[client]段、加了引号如port = "3307"、或改完没重启服务。phpEnv的“服务管理”界面点击重启,本质就是调用net stop MySQL + net start MySQL,不会自动重载配置。
- Windows下
my.ini通常位于F:\phpEnv\mysql\my.ini(路径以你安装位置为准) - 编辑前先备份:
copy F:\phpEnv\mysql\my.ini F:\phpEnv\mysql\my.ini.bak - 确认
[mysqld]下方有且仅有一行port = 3307(不要留空格或注释符号) - 改完保存,右键phpEnv托盘图标 → “重启MySQL”
端口被占时别硬改,先用phpEnv自带工具查杀
phpEnv集成的“本地TCP端口进程列表”是解决占用问题的第一顺位工具——比手动netstat更快,且带一键结束进程功能。它需要管理员权限运行,否则看不到系统级PID(比如PID 4的HTTP.sys)。
启动该工具后,直接搜:3306,能看到占用进程名、PID、路径。常见抢端口的程序有:mysqld.exe(另一个MySQL实例)、java.exe(某些IDE内置DB)、dockerd.exe(Docker桥接网络)。右键“结束进程”后,再点phpEnv托盘图标里的“启动MySQL”,基本能立刻恢复。
立即学习“PHP免费学习笔记(深入)”;
- 若显示PID为4,别点结束——那是Windows HTTP驱动,需进
services.msc禁用World Wide Web Publishing Service - Skype默认也抢80和3306,可在Skype设置→高级→连接里取消勾选“使用端口80和443”
- 杀完进程仍启不来?检查phpEnv日志:
F:\phpEnv\logs\mysql.log,搜索Can't start server定位真实报错
改完端口后连不上,大概率是客户端没同步更新
MySQL服务端改了端口,但mysql命令行、PHP的mysqli_connect()、甚至phpEnv自己的phpMyAdmin,全都不会自动读取新端口。它们默认只认3306,必须显式指定。
验证是否真通,别只看phpEnv界面“启动成功”,要用命令行直连:
mysql -h 127.0.0.1 -P 3307 -u root -p
注意:-P是大写,小写-p是输密码;-h 127.0.0.1强制走TCP,避开可能冲突的socket文件路径。
- PHP代码里要改
mysqli_connect('127.0.0.1', 'root', 'pass', '', 3307),第5个参数是端口 - phpMyAdmin需改
F:\phpEnv\phpmyadmin\config.inc.php里的$cfg['Servers'][$i]['port'] = '3307'; - 如果用PDO,DSN里写
mysql:host=127.0.0.1;port=3307;dbname=test
云/Docker/宝塔共存时,端口改得再对也可能连不上
本地phpEnv改好3307,但如果你同时开着宝塔面板或Docker容器,它们可能也在监听3307,或者防火墙规则没放行新端口。更隐蔽的是SELinux(Linux子系统下偶尔触发)或Windows Hyper-V虚拟交换机抢占端口。
最稳妥的排查顺序是:先关掉所有其他环境(宝塔、Docker Desktop、VMware),再用netstat -ano | findstr :3307确认只有mysqld.exe在监听;然后从另一台机器telnet 本机IP 3307测通断;最后才检查应用层配置。
- phpEnv默认只监听
127.0.0.1,不对外网开放,所以telnet失败是正常的——除非你改了my.ini里的bind-address = 0.0.0.0 - Windows Defender防火墙需手动添加入站规则:允许TCP端口3307
- 若用WSL2跑phpEnv,端口映射需额外配置
/etc/wsl.conf,否则宿主机访问不到



















