phpEnv 不管理 MySQL,只切换 PHP 版本;MySQL 版本取决于系统 PATH 中的客户端或手动启动的服务端实例,与 phpEnv 无关。

phpEnv 本身不管理 MySQL,它只负责切换 PHP 版本;你看到的 MySQL 版本取决于当前系统 PATH 中生效的 mysql 命令,或你手动启动的 MySQL 服务实例。
为什么 phpEnv 没有 MySQL 版本控制功能
phpEnv 是一个轻量级的 PHP 多版本管理工具(类似 pyenv、nvm),它的设计目标明确:只做 PHP 解释器的安装、切换与环境隔离。它不会安装、启动或配置 MySQL —— 这部分完全交由你本地已有的 MySQL 实例(如系统自带、Docker 容器、XAMPP/WAMP/MAMP 集成环境,或手动编译安装)负责。
所以当你在终端执行 mysql --version 或连接数据库后看到的版本,和 phpEnv 无关,只反映当前 shell 环境下 mysql 命令实际指向的客户端,以及你连接的那个服务端进程的真实版本。
在 phpEnv 环境下查 MySQL 版本的 3 种可靠方式
以下方法全部有效,按推荐顺序排列:
立即学习“PHP免费学习笔记(深入)”;
-
mysql --version:最快捷,查的是当前 PATH 下的 MySQL 客户端版本(注意不是服务端) -
mysql -u root -p -e "SELECT VERSION();":直接连库查服务端版本,最准确;若密码为空可省略-p - 启动 MySQL 后观察登录欢迎信息:
mysql -u root -p回车后第一屏就含Server version: 8.0.33这类字段
别用 SELECT version(漏括号)或 SELECT @@version_compile_os(云数据库常屏蔽),SELECT VERSION() 最通用,MariaDB 也兼容。
容易混淆的两个关键点
很多人误以为切换 PHP 版本会连带切换 MySQL,其实:
- phpEnv 切换 PHP 不会重启 MySQL,也不会修改
php.ini中的mysqli.default_host或pdo_mysql.default_socket—— 这些配置仍由你手动维护 - 如果你用 Docker 运行 MySQL,那版本完全由
docker run mysql:8.0这类镜像决定,和 phpEnv 零关系 - 某些集成环境(如 MAMP)把 MySQL 打包进 GUI,此时版本信息得去控制面板看,而不是依赖命令行 —— 因为它的
mysql可能没加进系统 PATH
真正需要关注的,是你 PHP 脚本里实际连接的是哪个 MySQL 实例——它可能运行在本地 3306,也可能在 Docker 的 3307,甚至远程服务器。版本差异带来的 SQL 语法兼容性(比如 JSON_CONTAINS 在 5.7+ 才支持)、字符集默认行为(utf8mb4_0900_as_cs vs utf8mb4_general_ci),远比“怎么查版本”更值得花时间确认。



















