当前位置: 首页 > news >正文

Linux CentOS 更改MySQL数据库目录位置

在 CentOS 系统上更改 MySQL(或 MariaDB)数据库目录位置(datadir)需要谨慎操作,以避免数据丢失或服务启动失败。以下是详细步骤:


1. 停止 MySQL/MariaDB 服务

bash

复制

sudo systemctl stop mysqld    # MySQL
# 或
sudo systemctl stop mariadb   # MariaDB

2. 确认当前数据目录位置

bash

复制

sudo mysql -e "SHOW VARIABLES LIKE 'datadir';"

默认位置通常是 /var/lib/mysql


3. 创建新数据目录

假设新目录为 /new/mysql/data

bash

复制

sudo mkdir -p /new/mysql/data
sudo chown -R mysql:mysql /new/mysql/data  # 确保权限正确
sudo chmod 750 /new/mysql/data            # 设置安全权限

4. 复制数据文件到新位置

bash

复制

sudo rsync -av /var/lib/mysql/ /new/mysql/data/
# 或使用 cp(但 rsync 更可靠)
sudo cp -rp /var/lib/mysql/* /new/mysql/data/

5. 修改 MySQL 配置文件

编辑配置文件(根据实际版本选择):

bash

复制

sudo vim /etc/my.cnf                # 通常主配置文件
# 或
sudo vim /etc/mysql/my.cnf          # 其他可能位置
# 或
sudo vim /etc/my.cnf.d/server.cnf   # MariaDB

找到 [mysqld] 部分,修改或添加:

ini

复制

[mysqld]
datadir=/new/mysql/data
socket=/new/mysql/data/mysql.sock  # 可选:同步更新socket路径

6. 更新 SELinux 上下文(如果启用)

bash

复制

sudo semanage fcontext -a -t mysqld_db_t "/new/mysql/data(/.*)?"
sudo restorecon -Rv /new/mysql/data

7. 更新 AppArmor(如适用)

若系统使用 AppArmor,需修改配置:

bash

复制

sudo vim /etc/apparmor.d/usr.sbin.mysqld

将旧路径替换为新路径,然后重启 AppArmor:

bash

复制

sudo systemctl restart apparmor

8. 启动 MySQL/MariaDB 服务

bash

复制

sudo systemctl start mysqld    # MySQL
# 或
sudo systemctl start mariadb   # MariaDB

9. 验证新数据目录

bash

复制

sudo mysql -e "SHOW VARIABLES LIKE 'datadir';"

确认输出是否为 /new/mysql/data


10. 清理旧数据(可选)

确认服务运行正常后,删除旧数据:

bash

复制

sudo rm -rf /var/lib/mysql

常见问题解决

  1. 启动失败

    • 检查日志:sudo journalctl -xe 或 sudo tail -n 100 /var/log/mysqld.log

    • 确保权限正确:sudo chown -R mysql:mysql /new/mysql/data

  2. Socket 路径问题
    如果客户端工具(如 mysql 命令)报错,需同步更新客户端配置:

    bash

    复制

    sudo vim /etc/my.cnf

    添加:

    ini

    复制

    [client]
    socket=/new/mysql/data/mysql.sock

总结

  • 关键步骤:停服务 → 复制数据 → 改配置 → 修权限 → 启服务。

  • 风险提示:操作前建议备份数据(/var/lib/mysql)。

  • 适用于 CentOS 7/8 及 MySQL 5.7+/MariaDB 10+。

相关文章:

  • 生态篇|多总线融合与网关设计
  • 函数与数组---------C语言经典题目(1)
  • Vue 3 计算属性与侦听器深度解析:优雅处理响应式数据
  • ​​Nginx快速入门-3:工作流程和模块化
  • day1-小白学习JAVA(mac版)---(jdk安装和环境变量配置)
  • 【Reading Notes】(8.2)Favorite Articles from 2025 February
  • ModbusTCP 转 Profinet 主站网关
  • 从零实现Git安装、使用
  • FairMOT与MCFairMOT算法对比
  • 【web服务_负载均衡Nginx】二、Nginx 核心技术之负载均衡与反向代理
  • c++ static 和 extern 关键字
  • 论文阅读笔记——Mixtral of Experts
  • 期货交易躲过AI捕杀—期货反向跟单策略
  • 51单片机实验四:键盘检测原理及应用实现
  • Linux工具学习之【gcc/g++】
  • 二月公开赛 宝塔搭建Web-ssrfme环境以及漏洞复现
  • 认知,信息技术
  • CSS伪元素
  • C++ 网络层接口设计与实现:基于 Socket 编程
  • IE之路专题11.IS-IS专题
  • 专家学者视角下的乡村教育:目标与出路并非“走出大山”
  • 特朗普施压鲍威尔遭多方批评,分析人士:特朗普若解雇鲍威尔或冲击美债
  • 中国旅游日主题月期间,东航将准备超51.9万套特惠机票
  • 抗美援朝老战士、华西医院精神科学术带头人之一袁德基逝世
  • 闲置书换蔬菜,浙江嘉善启动全民阅读系列活动
  • 东北三省,十年少了一个“哈尔滨”