← 全部文章 运维踩坑

MySQL:安装时启动超时,以及更换数据目录

2022 年 7 月 27 日 · 2 分钟读完

目录
  1. 安装时 Start the Server 超时
  2. 更换数据存储目录
  3. 1. 停止 MySQL 服务
  4. 2. 拷贝数据,修改配置
  5. 3. 启动服务
  6. 4. 连接测试
  7. 改完服务起不来
  8. 延伸

两篇 MySQL 安装维护的记录,都以 Windows 上的 MySQL 5.7 为例。

安装时 Start the Server 超时

安装 MySQL 时总是卡在启动服务这一步失败,删除重装很多次都一样。

原因是计算机名是中文。安装程序生成的配置文件 my.ini(默认在 C:\ProgramData\MySQL\MySQL Server 5.7\my.ini)里,日志文件名默认用计算机名命名,比如 log-error="张三的电脑.err"。MySQL 读不了这种带中文的路径,服务就起不来。

解决:把计算机名改成英文(设置 → 系统 → 关于 → 重命名这台电脑),重启后重新安装,顺利完成。

不想改计算机名的话,也可以手动把 my.ini 里所有用到计算机名的文件名改成英文,再启动服务。

更换数据存储目录

默认数据放在 C 盘,数据多了会占满系统盘、影响速度,把它挪到 D 盘。

1. 停止 MySQL 服务

Win + R 输入 services.msc 打开服务,找到 MySQL 服务(5.7 默认叫 MySQL57,不同版本名字不同):

双击它,点「停止」:

或者用管理员身份打开命令行,执行 net stop MySQL57:

2. 拷贝数据,修改配置

C:\ProgramData 是隐藏文件夹,要先在资源管理器里勾选「显示隐藏的项目」:

  1. 把整个 Data 文件夹拷到新位置,比如 D:\MySQLData\Data;
  2. 用文本编辑器打开 my.ini,找到 datadir:

改成新路径(Windows 路径里用 / 或者 \\):

datadir=D:/MySQLData/Data

3. 启动服务

在服务里点「启动」,或者 net start MySQL57:

4. 连接测试

连接成功,数据都在:

确认没问题后,再删除 C 盘原来的 Data 文件夹。

改完服务起不来

依次检查:

1. my.ini 的文件编码。 用记事本修改保存后,可能被存成了「UTF-8 带 BOM」,MySQL 读不了开头的 BOM 字节。用记事本「另存为」,编码选 ANSI(原文选的 ASCII 是同一个意思)覆盖原文件:

2. 残留进程。 上一次启动失败可能留下了 mysqld 进程,再启动时提示服务正在启动或停止:

用管理员身份打开命令行:

tasklist | findstr mysql
taskkill /f /t /im mysqld.exe

反复执行直到查不到 mysqld 进程,再启动服务:

3. 新目录的权限。 MySQL57 服务默认以 NETWORK SERVICE 账户运行,它可能没有新目录的读写权限。右键 D:\MySQLData → 属性 → 安全 → 编辑 → 添加 NETWORK SERVICE,给「完全控制」。

4. 看错误日志。 以上都不是的话,打开数据目录下的 计算机名.err,最后几行会写清楚失败原因,比猜快得多。

延伸

  • MySQL 8 默认用 UTF-8:5.7 的默认字符集是 latin1,中文要额外配置;建库时直接指定 utf8mb4。中文乱码的问题见 上位机写数据库中文乱码。
  • 装在 D 盘不等于数据在 D 盘:安装时选的是程序目录,数据目录是另一个选项(ProgramData 下)。安装时就在「Data Directory」里选好位置,省去后面的搬迁。
  • 定期备份:mysqldump -u root -p --databases mydb > D:\backup\mydb.sql,配合任务计划程序每天执行一次。工控现场的硬盘坏了,数据就全没了。
  • 按表名查询和清理旧数据:见 MySQL:information_schema 与特殊列名。

# MySQL # 数据库

原文首发于 blog.csdn.net