linux下变更mysql的数据文件目录

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

步骤是

1、停止mysql

2、拷贝数据文件到新目录,拷贝时保留文件的权限

3、修改配置文件

4、重启mysql

下面是详细介绍。

一、操作步骤

1、确认配置文件

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

bash 复制代码
ls /etc/mysql/mysql.conf.d/mysqld.cnf

2、备份配置文件

bash 复制代码
sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak

3、修改配置文件

bash 复制代码
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的。

相关键值修改如下:

bash 复制代码
datadir = /mnt/sda/mysql
bind-address            = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0

4、停止数据库

bash 复制代码
sudo systemctl stop mysql

5、拷贝数据文件

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

bash 复制代码
sudo cp -a /var/lib/mysql/ /mnt/sda/

8、重启数据库

bash 复制代码
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart mysql

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

进入mysql,

bash 复制代码
mysql> SHOW VARIABLES LIKE 'datadir';

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

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

bash 复制代码
sudo cp /lib/systemd/system/mysql.service  /lib/systemd/system/mysql.service.bak

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

bash 复制代码
sudo vi /lib/systemd/system/mysql.service

修改 ExecStart 为

bash 复制代码
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/mysql/mysql.conf.d/mysqld.cnf --user=mysql

如此,数据文件变更矣。

二、附录

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

相关推荐
凤凰院凶涛QAQ1 小时前
《MySQL内核拆解:从SQL到InnoDB》(四) : 联合查询 & 视图
数据库·sql·mysql
张小姐的猫1 小时前
【MySQL】访问 & 数据流动原理
android·数据库·mysql·adb·1024程序员节
这个DBA有点耶5 小时前
信创场景下数据同步软件怎么选?对比开源CDC与原生闭环工具的结构性差异
数据库·mysql·架构
多客:duokelijie6 小时前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
FluxDB9 小时前
FluxDB vs DBX vs DBeaver:GPUI、Tauri、Eclipse 三种技术栈实测
数据库·mysql
数据库小学妹9 小时前
MySQL分页结果不稳定:唯一键兜底与游标分页
数据库·mysql·dba
风翼靓崽10 小时前
mysql数据备份/恢复
数据库·mysql
这个DBA有点耶12 小时前
Merge还是Materialize?一文讲透MySQL 8.0 CTE底层的执行计划博弈与性能陷阱
数据库·mysql·架构
Thanks_ks12 小时前
MySQL 的 REPEATABLE READ 到底能不能防幻读——从快照读、当前读到 Next-Key Lock
数据库·mysql·innodb·mvcc·锁机制·事务隔离级别·间隙锁
Pniubi13 小时前
mysql 一张表可以有多少列
数据库·mysql