MySQL:Can't create test file XXX.lowe-test

问题说明  

  今天部署MySQL,在使用mysql_install_db,初始化数据库时报以下错误mysql

180622 11:36:38 mysqld_safe Starting mysqld daemon with databases from /data/3311/data/ 2018-06-22 11:36:39 0 [Note] /usr/sbin/mysqld (mysqld 5.6.30-log) starting as process 7008 ... 2018-06-22 11:36:39 7008 [Warning] Can't create test file /data/3311/data/ip-172-31-25-230.lower-test 2018-06-22 11:36:39 7008 [Warning] Can't create test file /data/3311/data/ip-172-31-25-230.lower-test 180622 11:36:39 mysqld_safe mysqld from pid file /data/3311/run/mysqld3311.pid ended 

  一直提示不能建立,验证了目录权限时没问题的,在被系统坑了几个小时以后,找到了解决的方法。linux

解决办法

  这个缘由有二,其中任意的一个缘由都会形成你被系统告知这个warning。sql

  第一,selinux,若是你刚好要操做的这台机器开着selinux,它确实可以使你的mysql没法在新目标位置进行mysql_install_db的操做,并爆出标题所示的警告。数据库

  一个简单的解决办法是使用命令暂时关闭selinux,以便让你的操做能够继续下去bash

setenforce 0

  但最好使用一个永久方法,以便在重启后继续不要这货。app

  修改/etc/selinux/config文件中设置SELINUX=disabled ,而后重启或等待下次重启。spa

  第二,apparmor,这个坑爹货和selinux同样的坑爹,它也对mysql所能使用的目录权限作了限制rest

  在 /etc/apparmor.d/usr.sbin.mysqld 这个文件中,有这两行,规定了mysql使用的数据文件路径权限code

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

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

/data/3311/ r,
/data/3311/** rwk,

  重启apparmor

/etc/inid.d/apparmor restart

  以后,就能够顺利地干你想干的事儿了!

相关文章
相关标签/搜索