执行MySQL初始化:
mysqld --initialize --datadir=/home/mysql/3307/data --user=mysql
报错,提示不能创建目录:mysqld: Can’t create directory ‘/home/mysql/3307/data/’ (Errcode: 17 – File exists)
建立目录再执行初始化命令,提示没有权限:mysqld: Can’t create directory ‘/home/mysql/3307/data/’ (Errcode: 13 – Permission denied)
该目录已经属于mysql用户,且有读写执行的权限。设置成0777,依然报错。
相同的命令,曾在CentOS上,自己编译的MySQL用过,不应该是命令的问题。该机器是我的笔记本,安装的是Ubuntu Server 18.04,MySQL是用官方的apt源安装的。经过一番查找,发现是一个叫AppArmor的玩意搞鬼。
Ubuntu有个AppArmor,是一个Linux系统安全应用程序,类似于Selinux,AppArmor默认安全策略定义个别应用程序可以访问系统资源和各自的特权,如果不设置服务的执行程序,即使你改了属主属组并0777权限,也是对服务起不到作用。