ubuntu下修改mysql数据库的datadir路径:

环境:ubuntu 18.04 (可通过命令查看:cat /proc/version)
mysql版本:5.7 (可通过命令:mysql -V)
修改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf 
指定datadir为新的路径:
datadir		= /work/mysql_db/mysql
注:这样直接修改后会报错
出现这个问题的原因是在ubuntu中存在一个apparmor的服务
AppArmor是一个高效和易于使用的Linux系统安全应用程序。
AppArmor对操作系统和应用程序所受到的威胁进行从内到外的保护,
甚至是未被发现的0day漏洞和未知的应用程序漏洞所导致的***。
AppArmor安全策略可以完全定义个别应用程序可以访问的系统资源与各自的特权。
AppArmor包含大量的默认策略,它将先进的静态分析和基于学习的工具结合起来,
AppArmor甚至可以使非常复杂的应用可以使用在很短的时间内应用成功。(引用百度百科)

AppArmor针对mysql的配置文件路径

/etc/apparmor.d/usr.sbin.mysqld 
修改其中的内容:
(切记其它的目录如插件目录请不要修改,否则会提示登录的问题)
 #Allow data dir access
 注销掉下面的两行,或者直接换成下面新路径即可
 #/var/lib/mysql/ r,
 #/var/lib/mysql/** rwk,
 /work/mysql_db/mysql/ r,
 /work/mysql_db/mysql/** rwk,

需要重启AppArmor服务后生效:

systemctl restart apparmor
或者:
/etc/init.d/apparmor restart

重启mysql服务即可正常启动

systemctl restart mysql
登录mysql,查看datadir路径:
> show variables like 'datadir';
显示数据路径已经发生了改变