Ubuntu 上更改 MySQL 数据库数据存储目录

Posted 数据分析与开发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu 上更改 MySQL 数据库数据存储目录相关的知识,希望对你有一定的参考价值。

(给数据分析与开发加星标,提升数据技能


来源:潇湘隐者

www.cnblogs.com/kerrycode/p/9795474.html


之前写过一篇博客“”,当时的测试环境是RHEL和CentOS,谁想最近在Ubuntu下面更改mysql数据库数据存储目录时遇到了之前未遇到的问题,之前的经验用不上了(或者说之前的总结不是太全面),修改完MySQL数据库数据存储目录后重启MySQL,发现MySQL服务无法启动。


root@mylnx2:/etc/mysql/mysql.conf.d# service mysql start


Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.


连MySQL的错误日志也未生成,使用service mysql status命令可以输出一些较详细的信息,如下所示:



错误信息为“[Warning] Can’t create test file /mysql_data/mysql/mylnx2.lower-test”。其实这里是踩到了“AppArmor”这个坑,之前对Ubuntu了解不多,所以直到遇到这个问题,才了解、知道这么个概念。下面是百科对AppArmor的介绍:


AppArmor是一个高效和易于使用的Linux系统安全应用程序。AppArmor对操作系统和应用程序所受到的威胁进行从内到外的保护,甚至是未被发现的0day漏洞和未知的应用程序漏洞所导致的攻击。AppArmor安全策略可以完全定义个别应用程序可以访问的系统资源与各自的特权。AppArmor包含大量的默认策略,它将先进的静态分析和基于学习的工具结合起来,AppArmor甚至可以使非常复杂的应用可以使用在很短的时间内应用成功。


AppArmor对MySQL所能使用的目录权限做了限制,如下截图所示,规定了MySQL使用的数据文件路径权限。


# cat /etc/apparmor.d/usr.sbin.mysqld



我将MySQL的数据库数据存储目录从/var/lib/mysql 切换到/mysql_data/mysql下面。所以就遇到了上面错误,需要修改或新增两条记录,从而使mysqld可以使用/mysql_data/mysql这个目录


/mysql_data/mysql/ r,

/mysql_data/mysql/** rwk,


然后重启AppArmor服务后,然后就可以重启MySQL服务了。


sudo service apparmor restart


当然/etc/apparmor.d/usr.sbin.mysqld还有Allow plugin access需要调整,这个不是重点,在此略过。


犹豫了一会,还是记录一下这个小小案例!虽然网上已有不少人总结这个,但是自己动手总结一下,印象也深刻一点!



推荐阅读

(点击标题可跳转阅读)





看完本文有收获?请转发分享给更多人

关注「数据分析与开发」加星标,提升数据技能

以上是关于Ubuntu 上更改 MySQL 数据库数据存储目录的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 更改 MySQL 数据库数据存储目录

ubuntu16.04修改mysql5.7的数据存储和读取的路径

ubuntu下更改mysql的字符编码后mysql无法启动

sh 在Ubuntu上更改MySQL密码

Ubuntu16.04下修改MySQL数据的默认存储位置

sh 在Ubuntu Linux上设置/更改/重置MySQL root密码