Amazon-Ec2

無法創建/寫入文件“/mnt/temp/something”(錯誤程式碼:13)

  • March 3, 2015

我將 mysql 配置的 tmp 目錄更改為已安裝的磁碟,然後service mysql restart出現以下錯誤:

Can't create/write to file '/mnt/temp/something' (Errcode: 13)

據我了解,Error Code 13是指文件權限錯誤。

但奇怪的是:

  1. 臨時目錄所有者已經是mysql並且文件權限是1777

drwxrwxrwt 2 mysql mysql 4.0K Nov 14 08:34 temp/ 2. 我可以使用非 root 使用者在該位置創建文件。 3. mnt 上有 600 Gb 的空間,所以這應該不是問題。 4. 我可以tmp在根磁碟上輕鬆創建目錄

/etc/mysql/my.cnf:

user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /mnt/mysql
tmpdir          = /mnt/temp
#tmpdir         = /var/tmp

不允許在已掛載的磁碟上創建 tmp 目錄嗎?否則我做錯了什麼?請幫忙。

所以這有點老了,但我自己解決了一個類似的問題(使用 /mnt/tmp 作為系統臨時目錄)並且必須弄清楚為什麼 MySQL 不會啟動。

您可能遇到了阻止 MySQL 使用 /mnt 驅動器上的目錄的 AppArmor 設置。您需要將新的 tmp 路徑添加到 MySQL 應用程序裝甲允許路徑列表中。

如果你查看你的系統日誌,你可能會在每次嘗試啟動 mysql 伺服器時看到類似這樣的消息:

type=1400 審計(1425343954.203:23): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/mysqld" name="/mnt/tmp/ibMXP5lg" pid=16418 comm="mysqld " 請求遮罩="c" 拒絕遮罩="c" fsuid=106 ouid=106

在這種情況下,您需要編輯文件:

/etc/apparmor.d/usr.sbin.mysqld

並添加以下行:

/mnt/tmp/r,
/mnt/tmp/** rwk,

到文件。然後只需重新啟動 AppArmor:

$ sudo service apparmor 重啟

引用自:https://serverfault.com/questions/644303