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. 验证与日志排查:通过日志快速定位问题。

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

相关推荐
不是三毛没有半7 分钟前
Mysql 简单的语句回顾
数据库·mysql·oracle
abcefg_h17 分钟前
MySQL查询详细介绍
数据库·mysql
whn19771 小时前
批量获取oracle的AWR报告方法
数据库·oracle
XueminXu1 小时前
Flink-SQL通过过滤-解析-去重-聚合计算写入到MySQL表
mysql·flink·kafka·topic·flink sql·flink-sql·sink
小旺不正经2 小时前
数据库表实现账号池管理
数据库·后端·算法
sanx182 小时前
一站式电竞平台解决方案:数据、直播、源码,助力业务飞速启航
前端·数据库·apache·数据库开发·时序数据库
学IT的周星星2 小时前
《MyBatis变形记:当SQL遇上“智能管家“》
数据库·sql·mybatis
byte轻骑兵2 小时前
突破文档型数据库迁移困境:金仓多模方案破解电子证照系统国产化难题
数据库
xdpcxq10293 小时前
EF Core框架数据库连接管理
java·jvm·数据库