mysql默认数据库文件在安装目录下。创建数据库的时候,并不能指定数据文件存放位置。这就很扯。它只能通过修改mysql.ini来更改数据文件存放目录,而且是一刀切的,没有办法做到数据文件和日志文件分开存放。假如服务器有多个盘,就不能利用磁盘不同IO的优势。但是,既然是服务器,通常会做阵列的吧,做了阵列,就无所谓哪个盘了。

我这次要说的,是修改mysql.ini后,mysql无法启动的问题。我遇到的是2个原因:一个是mysql.ini修改后字符编码被改变,导致mysql无法识别;另一个是存放mysql数据文件的新路径没有足够权限。

1、字符编码问题

一般来说,mysql.ini位于mysql安装目录下。但其实并不准确,像我的操作系统是win10,mysql默认安装在c:\program files,但mysql.ini位于C:\ProgramData\MySQL\MySQL Server 8.0

那么要改变数据文件的存储路径,就要修改mysql.ini。然而保存后,就有可能会改变其字符编码,导致mysql无法识别,从而无法启动mysql。

正确做法是:
1)首先备份一个mysql.ini。切记!!!

2)用记事本打开mysql.ini,修改mysql.ini里的datadir,如

# Path to the database root
datadir=e:\mysql\Data

3)mysql.ini默认字符编码是ANSI。所以修改后,用记事本另存为,记得选字符编码为ANSI。

windows下mysql8修改my.ini设置datadir后无法启动问题_无法启动

2、新路径权限问题

如上所述,我将datadir修改成新的路径e:\mysql\Data。但要注意,这个文件夹必须要有足够的权限,mysql才能使用。其中,关键的权限是SYSTEM要有全部权限。

windows下mysql8修改my.ini设置datadir后无法启动问题_数据文件_02