跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

phpEnv如何修改MySQL端口号 phpEnv避免3306端口冲突

先查日志确认是否真端口冲突:只有出现“Can't start server: Bind on TCP/IP port”才说明3306被占;若为unknown variable等错误,则是my.ini配置语法问题,需先修正配置文件。 确认是不是真端口冲突,别白改配置 php Env 启动 MySQL 失败时,很多人直接去改
my.ini
,结果重启还是报错。先打开 phpEnv 控制面板,点 MySQL 行右侧的 Logs ,翻到日志末尾,找这句:
Can't start server: Bind on TCP/IP port
。只有看到它,才是 3306 真被占了;如果看到的是
unknown variable
、
innodb_data_file_path
或语法错误提示,说明
my.ini
本身有误(比如多了一个空格、用了中文引号),得先修配置文件再谈端口。 改 phpEnv 的 MySQL 端口:只动
my.ini
的
[mysqld]
段 phpEnv 的 MySQL 配置文件默认在
C:\phpenv\mysql\my.ini
(不是
etc
目录下那个同名文件)。用 VS Code 或记事本打开,确保只在
[mysqld]
段内修改:
port
必须写成纯数字,比如
port = 3307
,不能写成
port = "3307"
或
port = '3307'
别把
port
写在
[client]
或文件末尾——MySQL 启动时完全不读这些位置 保存时选「UTF-8 无 BOM」编码,否则服务可能静默失败(Windows 下尤其常见) 改完必须先在 phpEnv 面板里点 Stop ,再点 Start ;只点 Start 不会重载配置 客户端连不上?不是服务没起,是还在往 3306 发请求 改了服务端口,但 PHP 还是报
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (111)
,大概率是因为连接串没同步更新: 命令行连接要用
mysql -u root -p -P 3307
(注意大写
-P
,小写
-p
是密码) phpEnv 自带的 phpMyAdmin:编辑
C:\phpenv\phpmyadmin\config.inc.php
,找到
$cfg['Servers'][$i]['host']
,改成
'127.0.0.1:3307'
(别写
localhost:3307
,Windows 下
localhost
会走命名管道,绕过端口) PHP 代码中用
mysqli_connect()
,第 5 个参数传端口号:
mysqli_connect('127.0.0.1', 'root', '', 'test', 3307)
ThinkPHP 等框架要改
config/database.php
里的
'port' => 3307
(整数,非字符串),或
.env
中的
DB_PORT=3307
并确认已加载 验证端口是否真监听成功,别信“重启就完事” 改完配置、重启服务、客户端也更新了,还是连不上?跳过猜测,直接看系统层面: PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 立即学习 “ PHP免费学习笔记(深入) ”; Windows 下运行:
netstat -ano | findstr :3307
,如果有输出且 PID 对应
mysqld.exe
,说明服务已在监听 如果没有输出,用
tasklist | findstr
确认 PID 是否属于 mysql d;如果不是,说明 MySQL 根本没启动成功,得回看 Logs Linux/macOS 类似,用
ss -tlnp | grep :3307
或
lsof -i :3307
防火墙(尤其是 Windows Defender 防火墙或第三方安全软件)可能拦截新端口,临时关闭测试一下 最容易被忽略的是:改了端口后,Docker、云服务器安全组、SELinux 这些中间层全都不认你新配的端口,本地通不代表线上通。验证前先想清楚——你是在本地调试,还是准备部署?

相关文章