Archlinux下安装mariadb没法改变datadir(Can't create test file)

140602 22:36:39 mysqld_safe Starting mysqld daemon with databases from /home/mysql 140602 22:36:39 [Warning] Can't create test file /home/mysql/localhost.lower-test

140602 22:36:39 [Warning] Can't create test file /home/mysql/localhost.lower-test /usr/libexec/mysqld: Can't change dir to '/home/mysql/' (Errcode: 13) 140602 22:36:39 [ERROR] Aborting   140602 22:36:39 [Note] /usr/libexec/mysqld: Shutdown complete  

140602 22:36:39 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended  

你已经修改了my.cnf中的datadir的值
你已经chown和chmod了数次新数据目录或者其父路径的属主和权限
你无数次地试图sudo systemctl restart mysqld,以及mysql_install_db!

恭喜你看见这篇文章,我在被系统坑了几个小时之后,找到了解决的方法。

apparmor,这个坑爹货!它也对mysql所能使用的目录权限做了限制
在 /usr/share/mysql/policy/apparmor/usr.sbin.mysqld(如果没有这个,请sudo find / -name "apparmor"查看自己的相关文件所在) 这个文件中,有这四行,规定了mysql使用的数据文件路径权限

/var/lib/mysql/ r,
/var/lib/mysql/** rw,
/var/lib/mysql/*.log w,
/var/lib/mysql/*.err w,
 

你一定看到了,/var/lib/mysql/就是之前mysql安装的数据文件默认路径,apparmor控制这里mysqld可以使用的目录的权限
我想把数据文件移动到/data/mysql下,那么为了使mysqld可以使用/data/mysql这个目录,照上面那四条,增加下面这四条就可以了

/data/mysql/ r,
/data/mysql/** rw,
/data/mysql/*.log w,
/data/mysql/*.err w,


之后,就可以顺利地干你想干的事儿了!

转载于:https://my.oschina.net/quicker/blog/809933

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值