MySQL 8.0.11.0数据目录迁移至其他磁盘问题咨询
我帮你梳理下MySQL 8.0迁移数据目录的正确操作,毕竟8.0在权限管控和服务配置上和5.X/5.7有不少差异,之前的老方法失效很正常。按下面的步骤来,应该能解决权限拒绝和服务启动失败的问题:
第一步:停止MySQL服务(必须用管理员权限操作)
打开管理员身份的命令提示符(CMD)或PowerShell,先确认你的MySQL服务名(默认是MySQL80,不确定的话可以去「服务」里看,或者执行sc query | findstr MySQL查找),然后执行命令:net stop MySQL80等待服务完全停止后再进行下一步。
第二步:复制数据目录到目标磁盘
不要直接「移动」原数据目录(C盘默认路径一般是C:\ProgramData\MySQL\MySQL Server 8.0\Data),而是用管理员权限把整个Data文件夹复制到你想要的位置,比如D:\MySQLData。直接移动容易丢失文件权限,复制更安全,后续验证没问题再删除原文件。第三步:修改MySQL配置文件
my.ini
MySQL 8.0的my.ini默认藏在隐藏文件夹C:\ProgramData\MySQL\MySQL Server 8.0里(要先显示隐藏文件才能看到)。打开文件找到以下两个关键配置项,修改为新的路径:datadir=D:/MySQLData # 注意用斜杠/或者双反斜杠\\,不要用单反斜杠 secure_file_priv=D:/MySQLData/Uploads # 如果有这个项的话,同步修改路径保存并关闭文件。
第四步:给新数据目录设置正确的NTFS权限(重中之重)
MySQL 8.0的服务默认使用NT SERVICE\MySQL80这个系统账号运行,必须给新的D:\MySQLData文件夹赋予该账号完全控制权限,否则启动服务会报权限拒绝:- 右键
D:\MySQLData文件夹 → 「属性」→ 「安全」选项卡 → 点击「编辑」 - 点击「添加」,输入
NT SERVICE\MySQL80,然后点击「检查名称」,系统会自动识别这个账号,点击「确定」 - 在权限列表里找到
NT SERVICE\MySQL80,勾选「完全控制」的「允许」选项,点击「应用」→「确定」
- 右键
第五步:启动MySQL服务并验证
回到管理员命令行,执行启动命令:net start MySQL80如果服务成功启动,登录MySQL执行
show databases;确认所有数据都在。如果启动失败,去新数据目录里找你的主机名.err日志文件,或者在Windows事件查看器里查找MySQL的错误信息,根据提示排查(大多还是权限问题)。最后一步(可选)
确认数据正常、服务稳定后,再删除C盘原来的Data目录,完成迁移。
内容的提问来源于stack exchange,提问作者user3906278

