登录
首页 >  文章 >  php教程

PHPEnv升级MySQL8.0详细教程

时间:2026-05-09 09:37:15 286浏览 收藏

本文详细讲解了在phpEnv集成环境中安全升级MySQL至8.0版本的完整操作流程,强调绝不能简单覆盖旧目录,而需严格遵循“确认真实版本→下载解压独立ZIP包→重写适配phpEnv的my.ini(关键指定旧data路径与mysql_native_password认证插件)→初始化并注册为mysqla服务→手动删除data目录下的auto.cnf”这一系列不可跳过的步骤,直击旧配置、数据权限和认证机制三大兼容性痛点,助你避开服务启动失败、数据库丢失、PHP连接报错2059等高频陷阱,真正实现平滑、可靠、零数据丢失的升级。

phpEnv安装最新版MySQL8.0 phpEnv升级数据库教程

phpEnv 里升级 MySQL 到 8.0,不能直接覆盖替换目录就完事——旧版配置、data 权限、认证插件三处不匹配,服务八成起不来。

确认当前 MySQL 实际运行版本和安装路径

别只看 phpEnv 界面写的“MySQL 8.0”,它可能只是显示版本号,实际跑的还是旧二进制。先验证:

  • 打开 phpEnv 主界面 → 点击 应用软件 → 查看 MySQL 行右侧的「路径」,记下完整安装目录(比如 D:\phpenv\Extensions\MySQL57
  • 在命令行执行:mysqld --version(需已将 bin 加入环境变量)或直接进该目录的 bin 下运行:.\mysqld.exe --version
  • 若返回 mysqld Ver 5.7.33,说明界面显示有误导,必须按真实版本处理

下载并解压 MySQL 8.0 压缩包(非 Installer)

phpEnv 是免安装型集成环境,必须用 zip 包(不是 .msi 安装器),否则服务注册、路径绑定全乱套:

  • 去官网下载页面:https://downloads.mysql.com/archives/community/,选 MySQL Community Server 8.0.34(当前最新稳定版),平台选 Windows (x86, 64-bit), ZIP Archive
  • 解压到新目录,例如:D:\phpenv\Extensions\MySQL80(不要覆盖原目录,更不要放进已有 MySQL 文件夹里)
  • 确保解压后结构清晰:bin/share/my.ini(暂无,稍后创建)都在根下

重写 my.ini 并适配 phpEnv 启动逻辑

MySQL 8.0 默认不读旧版 my-default.ini,且 phpEnv 启动脚本硬编码找 my.ini;同时 8.0 的默认认证插件会卡住老 PHP 连接:

  • D:\phpenv\Extensions\MySQL80 下新建文本文件,另存为 my.ini(编码选 ANSI 或 UTF-8 无 BOM,否则启动报错 Found option without preceding group
  • 内容至少包含以下几项(路径按你实际改):
    [mysqld]
    basedir=D:/phpenv/Extensions/MySQL80
    datadir=D:/phpenv/Extensions/MySQL57/data
    port=3306
    character-set-server=utf8mb4
    default_authentication_plugin=mysql_native_password
    skip-grant-tables
  • datadir 必须指向旧 MySQL 的 data 目录,否则数据库全丢;default_authentication_plugin 是解决 PHP 连接报错 2059 的关键

初始化、注册服务并切换 phpEnv 配置

phpEnv 不会自动帮你跑 mysqld --initialize,也不管你注册了什么服务名——它只认自己预设的服务名(如 mysqla):

  • 以管理员身份打开 CMD,cd 到新 MySQL 的 bin 目录:cd /d D:\phpenv\Extensions\MySQL80\bin
  • 执行初始化(仅首次):mysqld --initialize-insecure --user=mysql--initialize-insecure 生成空密码,方便后续登录)
  • 卸载旧服务(防止端口冲突):sc delete mysql(如果存在);注册新服务:mysqld --install mysqla(注意服务名必须是 mysqla,phpEnv 才能识别)
  • 回到 phpEnv 界面 → 设置 → 检查「MySQL 服务名」是否为 mysqla;再点「启动服务」,观察日志是否出现 Ready for connections

最常被跳过的一步:改完 my.ini 后没删掉旧 data 目录里的 auto.cnf,导致 MySQL 8.0 启动时拒绝复用已有 UUID,直接退出。动手前记得进 data 目录删掉它。

本篇关于《PHPEnv升级MySQL8.0详细教程》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>