如何在Ubuntu上更改MySQL数据存储路径

文章目录

    • 0 背景
    • 1 备份现有数据库数据
    • 2 停止 MySQL 服务
    • 3 复制现有的 MySQL 数据到新目录
    • 4 修改 MySQL 配置文件
    • 5 更新 AppArmor 或 SELinux 配置(如有启用)
    • 6. 修改 MySQL 系统文件中的 datadir
    • 7. 启动 MySQL 服务
    • 8. 验证更改
    • 参考资料

0 背景

在原先划分ubuntu磁盘分区的时候,给/分区划分的空间很少,但是其他的分区还有很多的空间。
故想把 mysql 数据库的数据迁移到另外的磁盘分区中。

1 备份现有数据库数据

更改 datadir 前,建议备份现有的 MySQL 数据,以防数据丢失。使用以下命令导出所有数据库:

mysqldump --all-databases > all-databases-backup.sql

2 停止 MySQL 服务

  • 查看 mysql 当前状态
    service mysql status 或者 systemctl status mysql
    在这里插入图片描述
    stop mysql
    sudo systemctl stop mysql
    再次查看 mysql 的状态
    在这里插入图片描述

3 复制现有的 MySQL 数据到新目录

复制当前的 MySQL 数据目录内容到新位置:
在 mysql 的命令中,运行下述指令,即可查看到数据文件的地址。
show global variables like "%datadir%";

我电脑的原始的 mysql 数据文件保存路径为:/var/lib/mysql/

数据迁移:

sudo cp -R /var/lib/mysql /home/soft/mysql_datadir/
sudo chown -R mysql:mysql /home/soft/mysql_datadir/mysql
sudo chmod 755 /home/soft/mysql_datadir/mysql

【注意】:

我最初选择放在我的家目录下,程序一直报错,没有权限访问该文件夹。
原来路径: /home/jie/soft/mysql_data/mysql 报错
新路径是 : /home/soft/mysql_data/mysql 正常使用
mysql 的数据存储,放在某个用户的家目录下,确实也不合适。因为可能会导致其他用户没有权限访问。

4 修改 MySQL 配置文件

我的电脑的 mysql 系统目录是: /etc/mysql/,找到 MySQL 的配置文件并更新 datadir:

根据自己的 mysql 选择下述两个文件的其中一个文件进行编辑:

sudo vim /etc/mysql/my.cnf

或者, (我用的是这个)

在这里插入图片描述
在修改前,可先备份。
针对配置文件进行修改:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到 datadir 这一行并更改为新的目录,更新 socket 位置为新的 socket:

#
# The MySQL database server configuration file.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

[mysqld]
#
# * Basic Settings
#
user            = mysql
# pid-file      = /var/run/mysqld/mysqld.pid
# socket        = /var/run/mysqld/mysqld.sock
#socket = /var/lib/mysql/mysql.sock
socket  = /home/soft/mysql_data/mysql/mysql.sock

#port           = 3306
datadir = /home/soft/mysql_data/mysql

5 更新 AppArmor 或 SELinux 配置(如有启用)

我只更新了 AppArmor 没有更新 SELinux

如果你的系统启用了 AppArmor 或 SELinux,可能需要更新其配置以允许 MySQL 访问新的 datadir。

AppArmor: 编辑 AppArmor 配置文件

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

添加新的 datadir 路径:

/home/soft/mysql_datadir/mysql/ r,
/home/soft/mysql_datadir/mysql/** rwk,

usr.sbin.mysqld 文件内容:

# Allow data dir access
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /home/soft/mysql_data/mysql/ r,
  /home/soft/mysql_data/mysql/** rwk,

保存后,重新加载 AppArmor 配置:

sudo systemctl restart apparmor

SELinux:如果使用 SELinux,你需要更新文件的安全上下文(我没有用到这个):

sudo semanage fcontext -a -t mysqld_db_t "/home/jie/soft/mysql_datadir(/.*)?"
sudo restorecon -Rv /home/jie/soft/mysql_datadir

6. 修改 MySQL 系统文件中的 datadir

编辑 MySQL 系统文件 /lib/systemd/system/mysql.service:

sudo vim /lib/systemd/system/mysql.service

找到以下部分:

ExecStartPre=/usr/share/mysql/mysql-systemd-start pre

在这一行的下方添加:

ExecStartPre=/bin/mkdir -p /home/jie/soft/mysql_datadir/mysql
ExecStartPre=/bin/chown -R mysql:mysql /home/jie/soft/mysql_datadir/mysql

效果如下图所示:
在这里插入图片描述

保存后,刷新 systemd 配置:

sudo systemctl daemon-reload

7. 启动 MySQL 服务

重新启动 MySQL 服务:

sudo systemctl start mysql

然后检查 MySQL 状态:

sudo systemctl status mysql

8. 验证更改

验证 MySQL 是否使用了新的 datadir:

mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"

或者

mysql -h 127.0.0.1 -P 3306 -u root -p -e "SHOW VARIABLES LIKE 'datadir';"

如下图所示,返回新的 datadir 路径 /home/soft/mysql_datadir/mysql
在这里插入图片描述

如果一切正常,MySQL 将会在新的 datadir 下运行。如果遇到任何问题,可以通过日志文件 /home/soft/mysql_datadir/mysql/error.log 检查更多细节。

参考资料

  • MySQL更换数据存储路径的方法
  • chatgpt 4o

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/892412.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

股市入门常见术语介绍

鉴于最近行情讨论火热,我也想借此平台,结合我大学时期身边同学老师的投资经历,写一篇交易入门术语简介。内容不多但是足以达到科普之用。 ​ 希望大家能谨慎对待投资,始终保持谦虚学习的态度。不要迷失在瞬息万变的金融市场&…

webstorm 编辑器配置及配置迁移

1.下载地址 WebStorm:JetBrains 出品的 JavaScript 和 TypeScript IDE 其他版本下载地址 2.安装 点击下一步安装,可根据需要是否删除已有版本 注意: 完成安装后需要激活 3.设置快捷键 以下为个人常用可跳过或根据需要设置 如&#xff1a…

满级抗摔续航王者,荣耀X60系列发布,起步价仅1199元

10月16日,荣耀X60系列暨荣耀平板新品发布会正式举办,荣耀X60 Pro、荣耀X60以及荣耀平板GT Pro、荣耀亲选耳机LCHSE X7e、荣耀亲选WhizKid儿童手表2 Pro等新品悉数亮相。其中,荣耀X60 Pro首次搭载6600mAh最大青海湖电池、绿洲护眼屏、双向北斗…

pta-7-6 学生类设计

题目要求: 设计一个类Student,并在Main类中生成Student类对象进行测试 1.对于Student类,设计私有属性name和age,并为每一个成员变量name和age设计其setXXX()和getXXX()方法,并对于s…

GPT-SOVIT模型部署指南

一、模型介绍 强大的小样本语音转换和文本转语音 WebUI。 具有以下特征: 零样本 TTS: 输入 5 秒的声音样本并体验即时文本到语音的转换。少量样本 TTS: 仅使用 1 分钟的训练数据对模型进行微调,以提高语音相似度和真实感。跨语…

【Oracle数据库进阶】001.SQL基础查询_查询语句

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

2023年五一杯数学建模C题双碳目标下低碳建筑研究求解全过程论文及程序

2023年五一杯数学建模 C题 双碳目标下低碳建筑研究 原题再现: “双碳”即碳达峰与碳中和的简称,我国力争2030年前实现碳达峰,2060年前实现碳中和。“双碳”战略倡导绿色、环保、低碳的生活方式。我国加快降低碳排放步伐,大力推进…

AUTOSAR_EXP_ARAComAPI的5章笔记(13)

☞返回总目录 5.4.7 事件(Events) 在骨架侧,服务实现负责通知事件的发生。如 5.4.2 RadarService Skeleton Class 所示,骨架为每个事件提供一个事件包装类的成员。骨架的事件包装类与代理的事件包装类看起来明显不同。 在骨架端…

[已解决]DockerTarBuilder永久解决镜像docker拉取异常问题

前阵子发现阿里云的docker加速镜像失效了(甚至连nginx都拉取不了),重新换了并且加多了网络上比较常用的dokcer加速源,可以解决一部分问题,但仍然有一些镜像的某个版本或一些比较冷的镜像就是拉取不了,原因未…

libaom 源码分析:aomdec.c 文件

aomdec.c 功能:libaom 项目完成视频解码过程的 demo文件位置:libaom/apps/aomdec.c函数关系 命令行说明 终端输入 ./aomdec --help,输出如下,展示如何使用方法。Usage: ./aomdec <options> filenameOptions:--help Show usage options and exit…

基于Springboot+Vue的小型民营加油站管理系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…

libaom 源码分析综述【持续更新】

libaom libaom 是 AOMedia&#xff08;开放媒体联盟&#xff09;开发的一个开源视频编解码器库&#xff0c;它是 AV1 视频压缩格式的参考实现&#xff0c;并被广泛用于多种生产系统中。libaom 支持多种功能&#xff0c;包括可扩展视频编码&#xff08;SVC&#xff09;、实时通信…

Linux权限和开发工具(1)

文章目录 1.Linux根目录的相关文件夹2.Linux软件管理器yum3.Linux编辑器-vim的基础使用1.命令模式下一些命令:有关光标的操作:有关复制删除的操作:有关字符替换的相关操作:有关注释的相关操作: 2.插入模式3.底行模式下一些命令:实现双窗口 4.vim命令 4.vim配置5.Linux编译器-gc…

架构设计笔记-9-软件可靠性

目录 知识要点 综合知识 案例分析 1.可靠性特性&#xff0c;软硬件可靠性对比 论文 1.论软件可靠性设计技术的应用 知识要点 软件架构需求过程主要是获取用户需求&#xff0c;标识系统中所要用到的构件&#xff0c;并进行架构需求评审。其中&#xff0c;标识构件又详细地…

AI周报(10.6-10.12)

AI应用-AI中医诊疗 AI中医诊疗通过整合中医“望、闻、问、切”的传统诊断方法&#xff0c;并结合现代AI技术&#xff0c;如自然语言处理和图像识别&#xff0c;来辅助医生进行更精准的诊断。 望诊&#xff0c;作为中医四诊之首&#xff0c;其精髓在于“司外揣内”。医者通过细致…

Java通过RAG构建专属知识问答机器人_超详细

RAG&#xff1a;融合检索与生成的文本精准生成技术 检索增强生成&#xff08;RAG&#xff09;是一种技术&#xff0c;它通过结合检索模型和生成模型来提高文本生成的准确性。具体来说&#xff0c;RAG首先利用检索模型从私有或专有的数据源中搜索相关信息&#xff0c;然后将这些…

STM32—SPI通讯协议

前言 由于I2C开漏外加上拉电阻的电路结构&#xff0c;使得通信线高电平的驱动能力比较弱&#xff0c;这就会号致&#xff0c;通信线由候电平变到高电平的时候&#xff0c;这个上升沿耗时比较长&#xff0c;这会限制I2C的最大通信速度&#xff0c; 所以&#xff0c;I2C的标准模…

uniapp学习(003-2 vue3学习 Part.2)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第15p-第p20的内容 文章目录 事件监听以及组件内置事件处理自定义模板快速创建uniapp条件渲染 v-if和v-elsev-e…

搭建一个vue3+vite框架

可以使用以下两种搭建方式 通过create-vue搭建vue3 项目&#xff08;建议使用&#xff09; create-vue create-vue 是 Vue.js 官方推荐的用于快速启动 Vite 驱动的 Vue 项目的脚手架工具。它简化了创建新 Vue 项目的过程&#xff0c;提供了预配置的项目结构&#xff0c;并集…