变更MySQL的数据文件目录,linux下比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
如此,数据文件变更矣。