环境:Ubuntu 16.04、mysql5.7
在16.04版本的MySQL数据库,默认是5.7版本的;
想要修改MySQL数据库存储的目录,需要了解mysql配置文件,以及apparmor的配置文件。
这里提一下apparnor 是控制访问权限的,而mysql依赖它,所以不单单是改完mysql配置文件的内容,同样的需要修改apparmor的相应的配置文件。
1.创建MySQL另外存储的目录
mkdir /database/mysql
chmod 700 /database/mysql
chowd mysql:mysq /database/mysql
2.将以前的数据库复制到新的存储目录 (这样避免了再次初始化,并且数据还在)
cp -av /var/lib/mysql/* /database/mysql
3.删除日志 (不删除会报错)
rm -rf /database/mysql/ib_logfile0
rm -rf /database/mysql/ib_logfile1
4.修改my.cnf
vim /etc/mysql/my.cnf
修改datadir=/var/lib/mysql 为你需要修改的目录 这里是 datadir=/database/mysql
5.修改apparmor的配置文件use.sbin.mysqld
vim /etc/apparmor/usr.sbin.mysqld
将
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
修改为
/database/mysql/ r,
/database/mysql/** rwk,
6.reload apparmor的配置并重启(这里不要停止apparmor服务,因为我在测试的时候关闭以后修改配置文件后反到是不成功,直接修改后reload 然后重启)
service apparmor reload
service apparmor restart
7.重启mysql
service mysql restart
如果启动不了,查看/var/log/mysql/error.log
如果出现:InnoDB: The innodb_system data file 'ibdata1' must be writable 请仔细核对第五步,第六步。
如果出现启动成功,但是测试新建数据库还是在原来的目录,试试重启服务器,或者仔细查看mysql配置文件,提醒一下,并不需要更改/usr/share/mysql/mysql-systemd-start 脚本中的datadir变量。