mysql安装完成后,默认的数据存储路径通常位于安装目录下的data文件夹或者系统默认分配的路径,当我们需要更换存储位置时,需要通过修改配置文件和调整目录权限来完成配置,不同操作系统的配置逻辑基本一致,仅部分路径和命令存在差异。

配置前的准备工作
在修改数据存储路径之前,需要先完成两项准备工作,避免后续配置出现错误。
- 确认当前mysql的数据存储路径,可以通过登录mysql后执行
SHOW VARIABLES LIKE 'datadir';命令查询,记录当前路径方便后续迁移数据。 - 创建新的数据存储目录,比如我们计划将数据存储到
/data/mysql_data目录,需要提前创建该目录,同时确保目录所在的磁盘有足够的存储空间。
迁移原有数据到新路径
如果mysql已经存在运行数据,不能直接修改配置,需要先将原有数据迁移到新的目录中,避免数据丢失。
首先停止mysql服务,不同系统的停止命令如下:
- Linux系统(systemd管理):
systemctl stop mysqld - Windows系统:
net stop mysql
停止服务后,将原有datadir目录下的所有文件复制到新的目录中,以Linux系统为例,假设原路径是/var/lib/mysql,新路径是/data/mysql_data,执行以下命令:
# 复制数据到新目录,保留文件权限 cp -a /var/lib/mysql/* /data/mysql_data/
修改mysql配置文件
mysql的配置文件在不同系统中的位置和名称略有不同,我们需要修改配置文件中的datadir参数指向新的路径。
Linux系统配置文件修改
Linux系统下mysql的配置文件通常是/etc/my.cnf或者/etc/mysql/my.cnf,找到配置文件中的[mysqld]段落,修改或添加datadir参数:
[mysqld] # 原路径可能是 datadir=/var/lib/mysql datadir=/data/mysql_data # 如果是mysql 8.0及以上版本,还需要确认socket路径是否对应,若socket放在原datadir下也需要修改 socket=/data/mysql_data/mysql.sock [client] # 客户端socket路径也需要同步修改,避免连接报错 socket=/data/mysql_data/mysql.sock
Windows系统配置文件修改
Windows系统下mysql的配置文件通常是my.ini,一般位于mysql安装根目录或者C:ProgramDataMySQLMySQL Server x.x目录下,同样找到[mysqld]段落修改datadir:
[mysqld] # 原路径可能是 datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data datadir=D:/mysql_data
设置新目录的权限
修改完配置文件后,需要给新的数据目录设置正确的权限,否则mysql服务会因为无法访问目录而启动失败。
Linux系统权限设置
Linux系统下mysql服务通常以mysql用户运行,需要将新目录的所有者修改为mysql用户和用户组:
# 修改目录所有者为mysql用户和mysql组 chown -R mysql:mysql /data/mysql_data # 设置目录权限,确保mysql用户可以读写 chmod -R 750 /data/mysql_data
Windows系统权限设置
Windows系统下需要给运行mysql服务的用户(通常是SYSTEM用户或者当前登录的管理员用户)赋予新目录的完全控制权限,右键点击新目录,选择属性,在安全选项卡中添加对应用户并赋予完全控制权限即可。
启动服务并验证配置
完成以上步骤后,尝试启动mysql服务:
- Linux系统:
systemctl start mysqld - Windows系统:
net start mysql
如果服务启动成功,登录mysql再次执行查询命令验证路径是否生效:
-- 登录mysql后执行 SHOW VARIABLES LIKE 'datadir';
如果返回的结果是我们设置的新路径/data/mysql_data/或者对应的Windows路径,说明配置成功。如果服务启动失败,可以查看mysql的错误日志,通常位于/var/log/mysqld.log(Linux)或者mysql安装目录的data目录下的日志文件(Windows),根据错误提示调整配置或者权限即可。