惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
D
Docker
T
The Blog of Author Tim Ferriss
罗磊的独立博客
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
J
Java Code Geeks
Jina AI
Jina AI
博客园 - 【当耐特】
C
Check Point Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
腾讯CDC
Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog

博客园 - 左直拳

在centos上部署gitea服务器 我的2025 利用wvp-gb28181-pro国标级联实现上级观看下级摄像头 将c++程序部署到docker 安装linux时的存储设置 使用Mobile Atlas Creator 2.0获取离线地图 利用SRS拉取摄像头辅码流实现浏览器展示多路摄像头预览功能 自签名证书需要手动确认风险导致nginx转发无效问题 程序跑在docker容器里会有性能瓶颈吗? 前端vue3+后端spring boot导出数据 c++程序示例:多线程下的实例计数器 c++项目使用drogon框架提供Resful API在CPU ARM架构下崩溃问题 编写c++程序分别在x86和arm架构的ubuntu下访问CAN 接口设备 时区问题导致java程序查询无结果 ubuntu 20.04挂载固态硬盘 项目绩效域 c++中构造对象实例的两种方式及其返回值 c++中“&”符号代表引用还是取内存地址? 高级项目管理
linux下变更mysql的数据文件目录
左直拳 · 2025-07-26 · via 博客园 - 左直拳

变更MySQL的数据文件目录,linux下比windows要简单。windows下的相关操作见附录。

步骤是

1、停止mysql
2、拷贝数据文件到新目录,拷贝时保留文件的权限
3、修改配置文件
4、重启mysql

下面是详细介绍。

一、操作步骤

1、确认配置文件

首先是要找到配置文件。像我们的操作系统,ubuntu20.04,是工控机提供的,被厂家阉割过,出厂就自带mysql。其配置文件是这个:

ls /etc/mysql/mysql.conf.d/mysqld.cnf

2、备份配置文件

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak

3、修改配置文件

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

比如说,我想把新的数据库目录设在 /mnt/sda/mysql 。同时想让别的机器也能访问这个数据库,从配置文件看,默认情况mysql只允许本机连。将bind-address的ip设为0.0.0.0,代表可以被任意机器访问。mysqlx-bind-address同理。mysqlx-bind-address据说是给一些插件使用,其端口是33060,我的C++项目就是用这个端口去连接mysql的。

相关键值修改如下:

datadir = /mnt/sda/mysql
bind-address            = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0

4、停止数据库

sudo systemctl stop mysql

5、拷贝数据文件

拷贝的同时,保留原来文件的权限设置。就一个参数,这点比windows方便多了。windows下修改mysql的数据目录,比较折腾,详见附录。

sudo cp -a /var/lib/mysql/ /mnt/sda/

8、重启数据库

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart mysql

9、查看当前mysql的数据文件目录所在

进入mysql,

mysql> SHOW VARIABLES LIKE 'datadir';

按道理,以上就可以实现变更数据目录了。但前面说到,我们的mysql是工控机自带的,也不知道厂家做了啥设置,它好像并不使用这个配置文件,一切按默认的来。所以只能修改启动文件,在启动的时候,强制使用配置文件。如下:

6、备份启动服务文件(可选)

sudo cp /lib/systemd/system/mysql.service  /lib/systemd/system/mysql.service.bak

7、修改启动服务文件(可选)

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

修改 ExecStart 为

ExecStart=/usr/sbin/mysqld --defaults-file=/etc/mysql/mysql.conf.d/mysqld.cnf --user=mysql

如此,数据文件变更矣。
在这里插入图片描述

二、附录

windows下mysql8修改my.ini设置datadir后无法启动问题