在本地集成环境phpEnv里,把MySQL 5.7换成MySQL 8.0并不是简单覆盖文件就能完成的事。如果处理不当,轻则服务无法启动,重则历史库表全部丢失。下面按实际操作顺序说明如何平滑升级。

一、升级前备份数据
打开phpEnv,确认MySQL 5.7处于运行状态,然后使用mysqldump导出全部业务库。建议按库单独备份,方便后期排查。
# 导出单个数据库 mysqldump -uroot -p --default-character-set=utf8mb4 test_db > /tmp/test_db.sql # 导出所有数据库 mysqldump -uroot -p --all-databases --default-character-set=utf8mb4 > /tmp/all_db.sql
二、停止并卸载MySQL 5.7
在phpEnv面板中先停止MySQL服务,再进入软件管理卸载MySQL 5.7。注意保留data目录之外的配置文件备份,例如my.ini。
常见目录位置
| 内容 | 默认路径 |
|---|---|
| 配置 | phpEnv/mysql57/my.ini |
| 数据 | phpEnv/mysql57/data |
三、安装MySQL 8.0
通过phpEnv安装MySQL 8.0,启动后 root 默认使用 caching_sha2_password 认证。老程序若用旧驱动连接会报错,可改回 mysql_native_password。
-- 修改认证方式 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;
四、导入备份数据
服务正常后,将之前导出的SQL重新导入。若原库使用了废弃语法,需在导入前调整sql_mode。
mysql -uroot -p test_db < /tmp/test_db.sql
五、检查兼容性问题
- GROUP BY 行为变化,MySQL 8.0 默认更严格
- 部分保留字需要反引号包裹
- 时间类型默认值不再隐式转换
平滑升级核心是先备后换,验证驱动兼容,再导入数据,避免直接替换文件。
按照以上步骤,就能在phpEnv中把MySQL 5.7平稳换成MySQL 8.0,且原有业务数据不丢失。