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后无法启动问题

相关推荐
大白要努力!5 小时前
MySQL 8.0 + Navicat 完整操作指南
数据库·mysql
云絮.6 小时前
数据库操作
数据库·mysql·算法·oracle
设计师小聂!8 小时前
宝塔 Linux 面板保姆级教程
linux·mysql·开源·运维开发
Tong Z9 小时前
Mysql DDL中的ALGORITHM
数据库·mysql
minji...13 小时前
MySQL数据库 (七) MySQL表的基本查询(上),insert、replace、select、where、order by
数据库·mysql·select·replace·insert·order by·where
折戟不必沉沙15 小时前
mysql忘记密码
数据库·mysql
kuonyuma15 小时前
MyBatis入门·注解操作
java·spring boot·mysql·spring·mybatis
聪明努力的积极向上15 小时前
【claude code】MySQL MCP 配置完整指南
数据库·mysql·ai编程
DIY源码阁15 小时前
JavaSwing酒店管理系统 - MySQL版
java·mysql·eclipse
川石课堂软件测试15 小时前
UI自动化测试|元素操作&浏览器操作实践
功能测试·测试工具·mysql·ui·docker·容器·单元测试