MySQL:修改数据库默认存储目录与数据迁移

目录

简述

一、数据备份

[方法 1:使用 mysqldump 导出数据](#方法 1:使用 mysqldump 导出数据)

[方法 2:直接复制数据目录](#方法 2:直接复制数据目录)

[二、修改 MySQL 默认数据库位置](#二、修改 MySQL 默认数据库位置)

[步骤 1:停止 MySQL 服务](#步骤 1:停止 MySQL 服务)

[步骤 2:修改配置文件](#步骤 2:修改配置文件)

[步骤 3:迁移数据到新目录](#步骤 3:迁移数据到新目录)

[步骤 4:设置新目录权限](#步骤 4:设置新目录权限)

[步骤 5:启动 MySQL 服务](#步骤 5:启动 MySQL 服务)

三、验证数据迁移成功

[登录 MySQL](#登录 MySQL)

查看新数据目录

检查数据库完整性

五、总结


简述

MySQL 默认将数据存储在系统盘(如 C:\ProgramData\MySQL\...),但随着数据量增长,系统盘可能面临空间不足的问题。此外,出于性能优化或安全性的考虑,用户可能需要将数据目录迁移到其他磁盘。

本文将详细介绍如何在 Windows 系统下修改 MySQL 的默认数据库位置,并确保数据安全备份与无缝迁移。

相关阅读: MySQL 安装过程记录以及安装选项详解


一、数据备份

方法 1:使用 mysqldump 导出数据

打开命令提示符(管理员权限),执行以下命令备份所有数据库:

bash 复制代码
mysqldump -u root -p --all-databases > "D:\MySQL_Backup\full_backup.sql"
  • -u root:以 root 用户登录。
  • -p:提示输入密码。
  • --all-databases:备份所有数据库。

方法 2:直接复制数据目录

停止 MySQL 服务(后续步骤会详细说明)。

将默认数据目录(如 C:\ProgramData\MySQL\MySQL Server 8.0\data)完整复制到安全位置。


二、修改 MySQL 默认数据库位置

步骤 1:停止 MySQL 服务

在Windows系统中,可以通过服务管理器找到MySQL服务并停止它。


**步骤 2:**修改配置文件

找到并修改MySQL的配置文件以指定新的数据库路径。配置文件通常位于C:\ProgramData\MySQL\MySQL Server 8.0

在配置文件中找到 datadir:

修改为非系统路径:(建议使用VSCode修改)

bash 复制代码
datadir=D:/MySQL Server 8.0\Data

确保新的数据目录路径是正确的。


步骤 3:迁移数据到新目录

将当前MySQL数据目录(C:\ProgramData\MySQL\MySQL Server 8.0\Data)中的数据复制到D:\MySQL Server 8.0\data 中。为防止出错,建议将原数据目录重命名备份,将原 data 目录重命名为 data_backup。


步骤 4:设置新目录权限

MySQL 服务需要对新目录有完全控制权,右键点击新目录(如 D:\MySQL Server 8.0\data),选择 属性 > 安全 > 编辑。

添加用户或组:输入 NETWORK SERVICE(MySQL 默认服务账户)。

赋予 完全控制 权限。

如果使用自定义服务账户,需选择对应账户。


步骤 5:启动 MySQL 服务

如果不将旧的数据复制到新的路径下,会报如下错误:

复制数据后,启动MySQL服务,没有报错就OK了。


三、验证数据迁移成功

登录 MySQL

打开MySQL命令行工具,输入密码进行登录。

查看新数据目录

bash 复制代码
SHOW VARIABLES LIKE 'datadir';

检查数据库完整性

bash 复制代码
SHOW DATABASES;

五、总结

通过以上步骤,已成功将 MySQL 的默认数据目录迁移到新位置。关键注意事项包括:

  1. 操作前备份数据:避免意外导致数据丢失。
  2. 配置文件与权限:确保 my.ini 的路径正确,且 MySQL 服务账户有权限访问新目录。
  3. 验证与日志排查:通过日志快速定位问题。

无论是为了释放系统盘空间,还是优化数据库性能,合理规划数据存储位置都是运维中的重要一环。

相关推荐
2301_802502331 小时前
哈工大计算机系统2025大作业——Hello的程序人生
数据库·程序人生·课程设计
大数据004 小时前
Docker慢慢学
mysql·docker·kafka·n8n
Alan3165 小时前
Qt 中,设置事件过滤器(Event Filter)的方式
java·开发语言·数据库
TDengine (老段)6 小时前
TDengine 集群容错与灾备
大数据·运维·数据库·oracle·时序数据库·tdengine·涛思数据
Lao A(zhou liang)的菜园6 小时前
高效DBA的日常运维主题沙龙
运维·数据库·dba
迪迦不喝可乐7 小时前
mysql知识点
数据库·mysql
愿你天黑有灯下雨有伞7 小时前
MyBatis-Plus LambdaQuery 高级用法:JSON 路径查询与条件拼接的全场景解析
mysql·json·mybatis
不太可爱的大白7 小时前
MySQL 事务的 ACID 四大特性及其实现原理
数据库·mysql
进击的CJR8 小时前
MySQL 8.0 OCP 英文题库解析(十)
mysql·adb·开闭原则
观测云8 小时前
HikariCP 可观测性最佳实践
数据库