zoukankan      html  css  js  c++  java
  • MySQL:Can't create test file XXX.lowe-test

    问题说明  

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

    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
    

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

    解决办法

      这个原因有二,其中任意的一个原因都会造成你被系统告知这个warning。

      第一,selinux,如果你恰好要操作的这台机器开着selinux,它确实能够使你的mysql无法在新目标位置进行mysql_install_db的操作,并爆出标题所示的警告。

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

    setenforce 0

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

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

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

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

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

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

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

      重启apparmor

    /etc/inid.d/apparmor restart

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

  • 相关阅读:
    Linux 下Firefox无法打开在'.domain'之前带有中划线的域名
    [Shell] 简单的自动检查ssh代理是否正常的脚本
    linux日志自动分割shell
    2014年学习计划
    [genome shell]标题栏优化
    什么样才叫解决问题?
    [mysql]清除单表大量数据方法(需保留部分数据)
    用linux c求最大公约数
    解决64位debian下无法安装ia32库的问题
    postfix邮箱服务器修改附件大小限制遇到的问题与解决
  • 原文地址:https://www.cnblogs.com/dachenzi/p/9214429.html
Copyright © 2011-2022 走看看