必须先确认当前datadir路径再修改配置,MySQL 8.0默认为C:/ProgramData/MySQL/MySQL Server 8.0/Data,但实际路径因安装方式而异;需用管理员CMD执行mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"获取真实路径,并确保新路径以Data结尾;停服务后完整复制data目录(非剪切),修改my.ini中datadir指向新路径,为NETWORK SERVICE账户授予目标文件夹权限,最后用--console模式验证启动成功。

确认当前 datadir 路径再动手
不查清楚当前路径就改配置,等于蒙眼换轮胎。MySQL 8.0 的 datadir 默认藏在 C:/ProgramData/MySQL/MySQL Server 8.0/Data,但服务名、安装方式不同会导致实际路径偏移。务必先用管理员权限打开 CMD 或 PowerShell,执行:
mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"
输出的 Value 字段才是真实路径——注意末尾的 Data 文件夹名必须保留,新路径也得以它结尾(比如 E:/MySQL/Data),不能只写到上一级。
停服务 + 完整复制 data 目录,别剪切
边运行边改路径会损坏数据,MySQL 官方明确禁止。必须先停服务:
- 查服务名:
sc queryex type= service state= all | findstr "MySQL" - 停服务:
net stop MySQL80(替换成你实际的服务名) - 确认无残留进程:
tasklist | findstr mysqld应无输出
然后创建目标文件夹(如 E:/MySQL/Data),再完整复制原 Data 目录内容(含 mysql、performance_schema 等所有子目录),不是只复制表文件,更不能剪切——旧数据留着验证成功后再删。
改 my.ini 后必须处理权限和路径写法
my.ini 通常在 C:/ProgramData/MySQL/MySQL Server 8.0/(隐藏文件夹),编辑前右键 → 属性 → 安全 → 编辑,给 NETWORK SERVICE 用户添加“读取和执行”“列出文件夹内容”“读取”“写入”权限。
Windows 桌面自动化技能,支持鼠标控制(移动/点击/拖拽/滚轮/截图)、键盘输入(文字输入/按键/组合键)、窗口管理(查找/聚焦/最大化/最小化/关闭/移动)、截图并发送文件。提供两种截图方式:Python pyautogui 截图(集成在自动化流程中)和 PowerShell + .NET 零依赖截图(支持区域截图和多显示器)。当用户需要自动化 Windows 桌面操作、控制鼠标键盘、管理窗口、执行 GUI 自动化任务、截图发送文件时使用。
在 [mysqld] 段下修改或新增:
datadir=E:/MySQL/Data
注意:/ 或双反斜杠 \ 都可以,单反斜杠 会被某些版本当成转义符;路径里不能有空格、中文、括号;my.ini 必须放在 MySQL 安装目录根下(和 bin 同级),不能放 bin 里,也不能叫 my.cnf。
启动前先用 --console 模式看报错
别急着 net start MySQL80。先以控制台模式手动启动:
mysqld --defaults-file="C:/ProgramData/MySQL/MySQL Server 8.0/my.ini" --console
观察输出:如果出现 Can't read dir of 'E:/MySQL/Data' (OS errno 13 - Permission denied),就是权限没给够;如果卡在 Starting MySQL... 无后续,大概率是路径写错或 Data 目录结构不完整。只有看到 MySQL init process done. Ready for start up. 才说明配置和数据都 OK,这时再注册服务或用 net start 启动才稳妥。
最容易被忽略的是:Windows 下服务账户默认是 NETWORK SERVICE,不是你当前登录用户,所以哪怕你对文件夹点了“完全控制”,也得单独给这个账户赋权——漏掉这步,90% 的 1067 错误就出在这儿。

















