WindowsマシンでMySQL 5.7を実行しています。このトピックのすべてのSOスレッドを読みましたが、データをロードしてこのエラーを回避する方法をまだ理解していません。
Error Code: 1290. The MySQL server is running with the --secure-file-priv
option so it cannot execute this statement
私は1)設定をチェックして、データセットを保存したディレクトリからロードできるように設定を変更し、2)管理者としてMySQLを開き、コマンドラインをチェックし、安全なファイルが実際に指すことを確認しました私のディレクトリ、3)initファイルで、それが私のファイルを含む正しいディレクトリを指していることを確認しました。データセットの場所を変更して新しいフォルダーに入れようとしましたが、上記の方法で移動したことを確認しましたが、まだ機能しませんでした。
すべての助けを歓迎します、ありがとう。
問題を再現できません。
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.13 |
+-----------+
1 row in set (0,00 sec)
mysql> SELECT @@GLOBAL.secure_file_priv;
+---------------------------+
| @@GLOBAL.secure_file_priv |
+---------------------------+
| NULL |
+---------------------------+
1 row in set (0,00 sec)
-- USE ...
mysql> LOAD DATA INFILE '/var/lib/mysql-files/myfile.csv'
-> INTO TABLE `test_files`
-> COLUMNS TERMINATED BY ',' ENCLOSED BY '\"'
-> LINES TERMINATED BY '\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv
option so it cannot execute this statement
ファイルを変更:/etc/mysql/my.cnf
[mysqld]
.
.
.
secure_file_priv=/var/lib/mysql-files/
.
.
.
MySQLを再起動します。
mysql> SELECT @@GLOBAL.secure_file_priv;
+---------------------------+
| @@GLOBAL.secure_file_priv |
+---------------------------+
| /var/lib/mysql-files/ |
+---------------------------+
1 row in set (0,00 sec)
mysql> LOAD DATA INFILE '/var/lib/mysql-files/myfile.csv'
-> INTO TABLE `test_files`
-> COLUMNS TERMINATED BY ',' ENCLOSED BY '\"'
-> LINES TERMINATED BY '\n';
Query OK, 3 rows affected (0,00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
6.1.4サーバーシステム変数:: secure_file_priv を参照してください
MACOSXで、.my.cnfをコンテンツ付きのホームディレクトリに追加します:
[mysqld_safe]
[mysqld]
secure_file_priv=""
これはMacOs Sierra 10.12.6で機能します。
コマンドを使用する
mysql --help | more
そして、それが書かれている行を探します:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf
~/.my.cnf
私の場合、ホームディレクトリにmy.cnfを作成しようとしましたが、うまくいきませんでした。私が見つけた唯一の解決策は、フォルダなどにファイルを作成することです
Sudo vim /etc/my.cnf
そして中に入れる
[mysqld_safe]
[mysqld]
secure-file-priv = ""
その後、すべてが動作することを確認できます
select @@GLOBAL.secure_file_priv;
mysql内で、値が空でNULLと異なることを確認します。
最後に、ディレクトリ/ tmpにファイルを保存してから、目的のディレクトリに移動します。別の方法(ただし安全でない可能性がある)の使用
chmod 1777 dir
dirは、ファイルを書き込むディレクトリの名前です。
Windowsでは、「secure_file_priv」を別のパスに設定するか、次のように設定して完全に無効にすることに注意してください。
secure_file_priv=""
mySQLサービスが低特権アカウント(デフォルト5.7インストール)で実行されている場合、機能しない場合があります。 [プロパティ]-> [ログオン]の[サービス]で[ローカルシステムアカウント]を選択して、これを変更できます。