mysql 8.0 的 lower_case_table_names 初始化后不可更改,必须重初始化data目录并显式指定参数。需删除data文件夹、修改my.ini、以管理员身份运行mysqld --initialize --lower-case-table-names=1,记录临时密码并登录修改,最后验证show variables like 'lower_case_table_names'返回值为1。

phpEnv 下 MySQL 8.0 无法直接改 lower_case_table_names —— 因为初始化时已固化,运行中修改必报错。
为什么 phpEnv 的 MySQL 8.0 改配置不生效?
phpEnv 是 Windows 下的集成环境,其 MySQL 8.0 默认使用 ZIP 包解压 + 自动初始化方式启动。关键点在于:lower_case_table_names 是数据字典(data dictionary)初始化时写死的参数,不是纯运行时变量。
你改完 my.ini 里的 lower_case_table_names=1 后重启服务,MySQL 会校验:磁盘上已有的系统表名大小写规则(来自初始化时的 --lower-case-table-names 值)是否与当前配置一致。不一致就直接拒绝启动,报错类似:
2024-10-29T11:32:10.290204Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
这个 '0' 就是 phpEnv 初始化时默认用的值(Windows 下也强制按 Unix 行为走,即默认 0)。
必须重初始化才能生效(且不能跳过)
phpEnv 没有提供图形化重初始化入口,得手动操作。核心动作不是“改配置”,而是“用新参数重新生成 data 目录”。
- 关闭 phpEnv 中的 MySQL 服务(右键托盘图标 → 停止 MySQL)
- 进入 phpEnv 安装目录,找到 MySQL 子目录(如
D:\phpEnv\phpEnv\mysql80) - 备份并删除整个
data文件夹(不是删里面文件,是删整个文件夹) - 编辑
my.ini,确保[mysqld]下有且仅有这一行:lower_case_table_names=1 - 以管理员身份打开 CMD,cd 到
bin目录下,执行:mysqld --initialize --console --lower-case-table-names=1 - 注意看控制台输出末尾的临时 root 密码(形如
Ai6#xK2!pQ9@),务必记下
这一步最关键:--lower-case-table-names=1 必须和配置文件里一致,且必须加在 --initialize 命令中,否则 data 目录仍按默认 0 初始化。
初始化后常见连不上、密码错问题
重初始化后,原 root 密码彻底失效,且 phpEnv 自带的“一键登录”功能会因密码不匹配失败。
- 启动 MySQL 服务(phpEnv 托盘 → 启动 MySQL)
- 用命令行登录:
mysql -u root -p,输入刚才记下的临时密码 - 首次登录后立刻改密,否则下次连不上:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password'; - 执行
FLUSH PRIVILEGES;确保权限立即生效 - 如果 phpEnv 控制面板仍提示“连接失败”,检查它是否缓存了旧密码 —— 有些版本会读取 ini 文件里硬编码的密码字段,需手动清空或重置
别指望跳过重初始化。MySQL 8.0 的 data dictionary 和系统表(如 mysql.ibd)结构与 lower_case_table_names 强绑定,强行绕过只会导致崩溃或元数据损坏。
验证是否真正生效
登录成功后,运行这条语句确认:
SHOW VARIABLES LIKE 'lower_case_table_names';
返回值必须是 1,且 Value 列显示数字 1(不是字符串 "1")。如果还是 0,说明初始化命令没执行、或执行时没加 --lower-case-table-names=1 参数、或 my.ini 路径没被正确加载(可加 --defaults-file="D:\phpEnv\phpEnv\mysql80\my.ini" 显式指定)。
最容易忽略的是:Windows 下 phpEnv 的 my.ini 有时会被放在 MySQL 根目录,有时在 etc 子目录;而 mysqld --initialize 默认只读当前目录下的 my.ini,路径错一个字符就白忙活。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











