mysql 更改数据存储目录
mysql
更改数据保存目录
参考:
https://www.cnblogs.com/kerrycode/p/4371938.html
https://www.cnblogs.com/kerrycode/p/12460771.html (潇湘隐者-靠谱)
系统环境 :CentOS Linux release 7.5.1804 (Core) / ubuntu18.04
MySQL
版本 : 8.0.18 MySQL Community Server - GPL / mysql5.7
默认情况下, MySQL
的数据目录一般位于/var/lib/mysql
下
1.
首先,弄清楚MySQL
的相关配置信息
找到MySQL
的数据目录,以及配置文件my.cnf
、错误日志的位置
1 | mysql> show variables like 'datadir%'; |
2.
对数据库做一个冷备份,以备不时之需。当然,你以可以用其它方式备份例如mysqldump
的方式。
1 | # 关闭mysql开始备份数据 / 创建数据备份目录 / 开始备份 |
3.
移动数据目录到其它目录
1 | # 这里假设,我需要将数据库的数据目录迁移到/mysql_data/下。 |
注意:这里建议使用mv移动数据库目录,而是不是复制(cp命令),因为执行复制时,SELinux上下文将丢失,并且您稍后必须手动进行设置,如果你使用cp命令复制文件,如果没有使用参数-a,那么要记得修改目录的属主,否则你有可能遇到
“MySQL error: 1017 Can’t find file: (errno: 13)”
这样的错误。
4.
修改配置文件
(1)
centos 只需要修改配置文件/etc/my.cnf
再重启mysql
即可
1 | # 一般情况下,只需修改datadir和socket等参数,具体根据你实际情况来判断那些参数需要修改 [client]为新增。 |
(2).
ubuntu
修改 /etc/apparmor.d/usr.sbin.mysqld
以及 /etc/mysql/mysql.conf.d/mysqld.cnf
https://www.cnblogs.com/hzw97/p/11589311.html
修改apparmor
配置
AppArmor
是内核的一个安全增强模块,对程序存取资源进行限制,如果不修改,启动mysql
,在journalctl -xe
中会报以下错误
修改 /etc/apparmor.d/usr.sbin.mysqld
(AppArmor) 将数据储存目录换为我们需要更换的数据存储目录
1 | # 原 |
修改mysql
配置文件 mysql5.7
版本默认配置文件是 /etc/mysql/mysql.conf.d/mysqld.cnf
修改 /etc/mysql/mysql.conf.d/mysqld.cnf
1 | # 修改为需要更换的数据存储目录 |
重启mysql验证 必须执行下面3个步骤,否则修改不会生效,单独启动mysql依旧会报错。
1 | # 重启下面三个服务 |
修改过后,对于CentOS
或RHEL
操作系统而言,你可能需要修改SELinux
的设置,而对于Ubuntu
或Debian
,你需要修改AppArmor
的设置(这篇Ubuntu上更改MySQL数据库数据存储目已经有介绍了,这里就不重复了)。当如,对于CentOS
或RHEL
,如果你禁用了SELinux的话,那么就可以直接忽略这个设置,因为禁用SELinux的话,就会避免很多杂七杂八的问题,但是我们不是要回避问题,而是要弄清楚问题产生的根本原因。
如果是centos
首先你要检查,是否开启了SELinux(ubuntu不需要检查ubuntu默认没有selinux)
。如下所示:
1 | [root@KerryDB ~]# /usr/sbin/sestatus |
4.
扩展
centos
不指定mysql.sock
时将会报下面的解决解决方法是my.conf
配置文件指定mysql.sock
1 | Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock |
结语祝好!