mysql的tmpdir必须通过my.ini配置文件在[mysqld]段中设置,使用正斜杠或双反斜杠路径,赋予system及mysql服务账户完全控制权限,重启服务后用show variables验证生效。

MySQL 的 tmpdir 必须通过配置文件设置,重启生效;动态修改 SET SESSION tmpdir 无效,别白费力气。
确认 phpEnv 中 MySQL 配置文件位置
phpEnv 是 Windows 下的集成环境包,其 MySQL 通常使用 my.ini 而非 my.cnf。配置文件一般位于:
-
D:phpEnvmysqlmy.ini(默认安装路径) - 或
D:phpEnvMySQLmy.ini(部分版本命名不同)
打开前先用资源管理器确认是否存在该文件;若无,需手动创建,并确保它在 [mysqld] 段落中被读取(即文件开头不能有 BOM,且包含 [mysqld] 标识)。
修改 tmpdir 并设置目录权限
在 my.ini 的 [mysqld] 区块下添加或修改这一行:
tmpdir = D:/phpEnv/mysql_temp
注意:tmpdir 值必须是正斜杠 / 或双反斜杠 \,单反斜杠 会导致 MySQL 启动失败(报错 Can't create/write to file)。
然后执行以下操作:
- 新建目录:
mkdir D:phpEnvmysql_temp - 右键该目录 → “属性” → “安全” → 编辑 → 添加用户
SYSTEM和运行 MySQL 服务的账户(通常是Administrators或你手动指定的服务登录账户),赋予“完全控制”权限 - 不要设为
C:WindowsTemp或用户桌面路径——这些位置可能受 UAC 或杀毒软件拦截
验证 tmpdir 是否生效
重启 phpEnv 的 MySQL 服务(推荐用 phpEnv 自带的控制面板操作,避免命令行权限问题)。再执行:
mysql -u root -p -e "SHOW VARIABLES LIKE 'tmpdir';"
输出应类似:
+---------------+---------------------+ | Variable_name | Value | +---------------+---------------------+ | tmpdir | D:/phpEnv/mysql_temp | +---------------+---------------------+
如果仍显示 C:WindowsTEMP 或空值,说明:
- 配置文件没被正确加载(检查是否改了错误的
my.ini,或 MySQL 启动时用了--defaults-file指定了其他配置) - 目录权限未落实(Windows 下常被忽略,但比 Linux 更敏感)
- 路径含空格或中文(
tmpdir不支持,哪怕目录名合法)
多路径轮询不适用于 phpEnv 默认部署
虽然 MySQL 支持用分号分隔多个 tmpdir(如 tmpdir = D:/temp1;D:/temp2),但在 phpEnv 的 Windows 环境中,这个特性基本不可靠:
- MySQL 官方文档注明该行为仅保证“尽力而为”,实际只取第一个可用路径
- phpEnv 封装的服务启动脚本未适配多路径逻辑,容易导致启动卡死或静默降级到系统临时目录
- Windows 权限模型对多路径的原子性写入支持弱,反而增加出错概率
真要分散 I/O,请直接用 SSD + 单一高速路径,别绕路折腾多路径。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











