MySQL 数据文件路径默认在安装时由系统或安装程序指定,但可以根据需要修改。关键是要同时调整 MySQL 配置文件中的
datadir参数,并确保数据目录权限、SELinux(如启用)、AppArmor(Linux)等安全机制允许 MySQL 访问新路径。
确认当前数据文件路径
登录 MySQL 后执行以下命令查看当前设置:
SELECT @@datadir;
或者直接查看配置文件中已生效的
datadir值(可能来自
my.cnf或
my.ini)。
修改 datadir 配置步骤
需按顺序操作,避免服务启动失败:
停止 MySQL 服务:sudo systemctl stop mysql(Linux)或通过服务管理器停止(Windows) 将原数据目录(如
/var/lib/mysql)完整复制到目标路径(如
/data/mysql),保留所有子目录、文件及权限:
sudo cp -rp /var/lib/mysql /data/编辑 MySQL 配置文件(通常为
/etc/my.cnf、
/etc/mysql/my.cnf或
C:ProgramDataMySQLMySQL Server X.Xmy.ini),在
[mysqld]段下添加或修改:
datadir = /data/mysql若使用 systemd(较新 Linux 发行版),还需检查
mysql.service是否硬编码了数据路径,必要时覆盖配置或调整
ProtectHome/
ProtectSystem设置 更新系统级权限:确保 MySQL 用户(通常是
mysql)对新目录有读写执行权限:
sudo chown -R mysql:mysql /data/mysql如启用 SELinux,需添加上下文:
sudo semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?",再执行
restorecon -Rv /data/mysql启动 MySQL:
sudo systemctl start mysql,并检查错误日志(
/var/log/mysql/error.log或配置中指定的
log-error路径)确认是否成功
常见问题与注意事项
修改后无法启动,多数因以下原因:
目录权限不对(尤其是属主不是mysql用户) SELinux/AppArmor 拦截访问(Linux 系统需额外授权) 配置文件语法错误,或
datadir路径末尾多了斜杠(如
/data/mysql/)导致识别异常 未关闭 MySQL 就直接移动数据目录,造成文件锁或损坏 Windows 下路径需用正斜杠或双反斜杠:
datadir = "D:/mysql/data"或
datadir = "D:\mysql\data"
验证与后续维护
成功启动后建议立即验证:
再次运行SELECT @@datadir;确认返回值已更新 连接任意数据库,执行简单查询(如
SHOW TABLES;)确认数据可读 检查
INFORMATION_SCHEMA.SCHEMATA中各库是否正常列出 备份新路径下的数据,避免迁移过程遗漏
