この投稿はかなり古いものですが、2018年もこの問題はまだ残っています。私はこの迷路の中で頭を叩いて数時間過ごしました。
サーバーバージョン:Ubuntu14.04で実行されている5.7.24MySQL Community Server(GPL)
MySqlがSELECTINTOOUTFILEを使用できるようにするには、構成でMySQLのsecure-file-priv
オプションを設定する必要があります。次の2行を次のように追加します/etc/mysql/mysql.conf
。
[mysqld]
# allow INTO OUTFILE file and LOAD DATA INFILE to this directory
secure_file_priv=/usr/share/mysql-files
/usr/share/mysql-files
ファイルが保存されるディレクトリです。私はそれを次のように作成しました:
sudo su
cd /usr/share
mkdir mysql-files
chown mysql:mysql mysql-files
chmod a+rw mysql-files
好きなように変更しますが、ディレクトリ /usr/share/mysql-files
の使用は避けてください。/tmp
なんで?
なぜなら、次回再起動するときに/tmp
、貴重なmysql-filesサブディレクトリを含むディレクトリが正常に消去されるからです。その後、mysqlサービスがチョークし、起動せず、暗号化メッセージで奇妙なエラーが発生します。
mysqlを再起動し、以下を確認します。
sudo su
service mysql restart
mysql
mysql> SHOW VARIABLES LIKE "%secure%";
+--------------------------+-------------------------+
| Variable_name | Value |
+--------------------------+-------------------------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | /usr/share/mysql-files/ |
+--------------------------+-------------------------+
3 rows in set (0.07 sec)
mysql> quit
Bye
まだ終わっていません!
apparmor
あなたのプロジェクトを台無しにする人の名前による荒らしがあります。ファイルを編集し/etc/apparmor/local/usr/sbin/mysqld
、次の2行を追加します-終了コンマを忘れないでください:
/usr/share/mysql-files rw,
/usr/share/mysql-files/** rw,
保存して再解析します。
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
それでうまくいくはずです。