MySQLでのエラーでLoad data infieでのエラー。

まぁ、環境によっては、簡単に対応できたりとかするんだけど

Ubuntu 14.04
MySQL 5.5

での環境で起きたエラー。これ解決するのに時間かかった。


原因は、セキュリティの変更。 

解決は、セキュリティの例外登録


1. ルート権限で、 /etc/apparmor.d/usr.sbin.mysqld を開く。


2. ApparmorがMySQLに対して許可しているフォルダのパスのリストが表示される。
そこにインポートファイルのあるフォルダを追加し保存する。

#mysqlの許可しているところ

/usr/sbin/mysqld {

 <省略>

  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock w,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock w,

 #ここから辺にインポートファイルのあるフォルダパスを追加
  /home/xxx/ r,
  /home/xxx/* rw,

  /sys/devices/system/cpu/ r,


  # Site-specific additions and overrides. See local/README for details.
  #include <local/usr.sbin.mysqld>
}


3. 適用されたApparmorの設定ファイルを反映させる。

# /etc/init.d/apparmor reload

4. MySQLの再起動

# service mysql restart



で、Load data infileが動きます。

もし、「あれ? パーミッション合ってるけど、ならない」とか「アップロードしたファイルをインポートで、not found (Errcode: 13)29が出る」とかなら


これも確認してみてください。