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

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+。

http://www.xdnf.cn/news/231.html

相关文章:

  • Ambari 中移除/重装 yarn 集群中的 NodeManager 节点
  • AI绘制流程图,方法概述
  • 仿腾讯会议项目实现——设置配置文件
  • HOOPS Exchange 与HOOPS Communicator集成:打造工业3D可视化新标杆!
  • 数字化转型浪潮下,B端产品如何助力企业乘风破浪?
  • 【天外之物】角动量与合力矩
  • 如何使用Labelimg查看已经标注好的YOLO数据集标注情况
  • PoCL环境搭建
  • 处理图像的深度神经网络(DNN)有哪些呢?
  • 基于n8n的AI应用工作流原理与技术解析
  • android编译使用共享缓存
  • java基础问题
  • 用DeepSeek制作会议记录
  • 【Pandas】pandas DataFrame where
  • 自动驾驶安全模型研究
  • SuperMap iClient3D for WebGL 如何加载WMTS服务
  • 5.1 城市给水排水管道工程
  • Flutter异常Couldn‘t find dynamic library in default locations
  • 关于GPU的涡轮散热与被动散热
  • SpringBoot私人西服系统开发与设计
  • 利用deepseek+Mermaid画流程图
  • Day94 | 灵神 | 二叉树 统计二叉树中好点的数目
  • Javaweb实操(一)—Servlet实现单表的CRUD操作
  • 利用 SSRF 和 Redis 渗透
  • transformer-词嵌入和位置嵌入详解
  • postman使用设置
  • 2025 年第十五届 MathorCup竞赛赛题浅析-助攻快速选题
  • Qt工具栏中添加按钮QAction
  • 内网穿透服务器—FRP
  • 深入理解分布式缓存 以及Redis 实现缓存更新通知方案