如何设置mysql数据目录_mysql数据存储位置

9次阅读

mysql数据目录修改需停库后迁移并更新配置:先用SHOW varIABLES LIKE ‘datadir’确认原路径,再rsync复制数据至新目录,修改my.cnf中datadir,调整权限为mysql:mysql,重启后验证生效。

如何设置mysql数据目录_mysql数据存储位置

MySQL 数据目录(data Directory)是 MySQL 存放数据库文件、日志、系统表等核心数据的物理路径。修改它的位置,通常是为了节省系统盘空间、提升 I/O 性能、或满足安全与备份策略要求。关键在于:修改前必须停库,修改后需确保权限和配置完全匹配,否则 MySQL 无法启动。

确认当前数据目录位置

登录 MySQL 后执行以下命令查看当前设置:

mysql> SHOW VARIABLES LIKE ‘datadir’;

输出类似 /var/lib/mysql 即为当前数据目录。也可通过配置文件(如 /etc/my.cnf/etc/mysql/my.cnf)中 [mysqld] 段下的 datadir 行确认。

准备新数据目录并迁移数据

  • 选择目标路径(如 /data/mysql),创建目录:sudo mkdir -p /data/mysql
  • 停止 MySQL 服务:sudo systemctl stop mysql(或 mysqld,取决于系统)
  • 复制原数据目录全部内容(保留权限和隐藏文件):sudo rsync -av /var/lib/mysql/ /data/mysql/
  • 验证新目录内容完整(尤其检查 ibdata1ib_logfile*mysql/performance_schema/ 等是否齐全)

修改配置并调整权限

编辑 MySQL 配置文件(如 /etc/my.cnf),在 [mysqld] 段中更新:

datadir = /data/mysql

若使用 systemd(常见于 centos 7+/ubuntu 16.04+),还需检查是否有覆盖配置(如 /etc/systemd/system/mysqld.service.d/override.conf),避免冲突。

设置正确属主和权限(以 MySQL 用户为准,通常是 mysql:mysql):

sudo chown -R mysql:mysql /data/mysql
sudo chmod -R 750 /data/mysql

重启服务并验证

  • 启动 MySQL:sudo systemctl start mysql
  • 检查状态:sudo systemctl status mysql,确认 Active: active (running)
  • 重新登录 MySQL,再次运行 SHOW VARIABLES LIKE ‘datadir’;,确认已生效
  • 执行简单查询(如 select count(*) FROM mysql.user;)验证读写正常

不复杂但容易忽略:SElinux(CentOS/RHEL)或 appArmor(Ubuntu)可能阻止访问新路径,如启动失败且日志提示权限拒绝,需相应调整策略或临时禁用以排查。

text=ZqhQzanResources