Windows Server + IIS 部署 MySQL 关键配置
Windows Server + IIS 部署 MySQL 关键配置
Windows Server 上部署 IIS + PHP + MySQL 的经典组合,遇到一些常见的”小问题”很坑人:上传文件失败、表损坏报错。下面把两个最关键的配置点整理一下。
MySQL 5.6.17 安装
Windows 平台使用 mysql-installer-community-5.6.17.0 安装包,注意事项:
- 安装路径避免中文和空格,否则后续迁移/备份会有路径问题
- 安装类型选
Developer Default或Server only,按需勾选 Connector/Workbench - 设置
root密码时务必记住,字符集选utf8mb4避免中文乱码 - 安装完成后 MySQL 默认监听
3306端口,仅本机(localhost)可连,需要远程访问时在my.ini中把bind-address = 127.0.0.1注释掉
IIS 下 PHP 站点的 temp 目录权限
这是 IIS 部署 PHP 时最常遇到的”上传失败”问题:PHP 的会话、上传临时文件默认放在 C:\Windows\Temp,而 IIS 的 PHP 工作进程用的是 IUSR / IIS_IUSRS / Network Service 账号,需要给 temp 文件夹加权限。
具体操作:
- 右键
C:\Windows\Temp→ 属性 → 安全 → 编辑 → 添加 - 分别添加以下三个账户并给”完全控制”或”修改”权限:
| 账户 | 说明 |
|---|---|
IUSR |
IIS 匿名访问账号(IUSR_ |
IIS_IUSRS |
IIS 工作进程组,PHP-FastCGI 通常用这个身份运行 |
Network Service |
旧版 IIS 默认工作账号 |
如果不加这些权限,PHP 上传时会报”找不到临时文件夹”、”没有写权限”等错误,且 IIS 日志里看不到明显异常。
另一种方案是用 PHP 的 upload_tmp_dir 指定到独立目录,然后单独给那个目录加权限,更可控。
MySQL 表损坏修复
MySQL 表损坏常见表现:
- 启动时报
Table 'xxx' is marked as crashed and should be repaired - 查询时报
Can't open file: 'xxx.frm' (errno: 145) - 某些行无法读取
修复命令:
1 | REPAIR TABLE mytable USE_FRM |
参数说明:
REPAIR TABLE:标准修复命令,会尝试重建索引并保留数据USE_FRM:当.frm文件存在但 MySQL 状态信息损坏时,强制使用.frm重建表结构描述,再尝试从数据文件中恢复
适用场景:MySQL 服务器异常关闭、磁盘空间耗尽、断电后表可能处于不一致状态。
其他修复手段:
1 | -- 轻量级修复(先尝试) |
如果 REPAIR TABLE USE_FRM 仍无法修复,且数据极重要,可以从备份恢复,或者用 innodb_force_recovery = 1 启动 MySQL 后导出数据。
小结
两个看似小的配置——IIS 三个账号权限和 REPAIR TABLE USE_FRM——是 Windows + IIS + MySQL 部署中最容易踩坑的环节。提前配置好能避免大量”诡异”问题的排查时间。