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

  之后,就可以順利地干你想干的事兒了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM