因为c盘将近满了,所以挪出一些空间,打上了MySQL的主意。
基本信息
- MySQL版本:5.7
- 系统:Windows 10
- 服务名称:MySQL57
- 原始信息:
- MySQL安装目录:C:\Program Files\MySQL\MySQL Server 5.7
- MySQL的数据目录:C:\ProgramData\MySQL\MySQL Server 5.7\Data
- MySQL的配置文件:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
- 注意上面的起始目录是不一样的
- my.ini文件的内容,仅仅贴出这一行准备修改的内容
# Path to the database root
datadir="C:/ProgramData/MySQL/MySQL Server 5.7/Data"
- 最终完成后:
- MySQL安装目录:C:\Program Files\MySQL\MySQL Server 5.7
- MySQL的数据目录:D:\NewPath\MySQL Server 5.7\Data
- MySQL的配置文件:C:\Program Files\MySQL\MySQL Server 5.7\my.ini
- my.ini文件的内容,仅仅贴出这一行准备修改的内容
# Path to the database root
datadir="D:/NewPath/MySQL Server 5.7/Data"
操作步骤
- 将现有服务停掉:
net stop MySQL57
- 将c盘数据转移到d盘,同时更新my.ini文件的内容
- 将c盘配置文件从一个目录移动另一个目录
- 移除旧服务:
mysqld --remove MySQL57
- 安装新服务:
mysqld --install MySQL57 --defaults-file="C:\Program Files\MySQL\MySQL Server 5.7\my.ini"
- 启动服务:
net start MySQL57
注:以上有人说更改注册表方式更改defaults-file的位置,其实与安装新服务的效果是类似的。
以上每个人可能遇到的坑不一样,记录一下我遇到的坑。
第一坑:配置文件不生效
- 一开始,我将配置文件一起复制到了d盘,按照网上说的更改注册表,defaults-file路径也改好了,但是不生效,报错如下:
mysqld: Can't change dir to 'C:\Program Files\MySQL\MySQL Server 5.7\data\' (Errcode: 2 - No such file or directory)
这个报错很诡异,因为我希望目录改到d盘。 - 所以,又在网上找到答案,更改my.ini时需要注意文件编码是ANSI,我看了一下,没有问题;
- 后来,又看到有人用的系统自带的记事本,编码不对,需要notepad++,也按照此方法试一下,仍然不行;
- 直到有人说,因为配置文件不生效,所以MySQL会按照默认的方式去配置,怀疑上面的报错是配置文件不生效导致,而既然配置文件内容没有问题,那么是否是因为位置的问题,于是,将配置文件从d盘挪到
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
; - 仍然不行,于是,挪到安装目录下:
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
,终于出现不一样的报错,说明这个配置文件生效了。
第二坑:上传文件夹目录缺失
- 这个比较简单,就是如下的报错:
mysqld: Can't read dir of 'C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\'
- 解决方案:加上这个空目录就行了,当时移动时,全部移动到d盘了。
服务启动日志
- 当上述步骤遇到问题时,服务无法启动,只给简单的信息说无法启动,这个让人抓狂。
- 用这个命令查看具体报错详情:
mysqld --console
虽然不是最完美的方案,但是暂时先这样了。
总结:
- 使用命令行,即使是Windows,用起来还是挺方便的。
- 多观察my.ini文件中的没有注释掉的目录路径是否与实际一致。
PS:注意命令行在管理员模式下,非管理员模式下没有试过,另外,这个是针对MySQL5.7的,但是MySQL8.0应该有些是类似的,可以参考。