Mysql5.7 エクスポート データ プロンプト --secure-file-priv オプションの問題の解決策

jacklove
リリース: 2018-06-08 15:59:50
オリジナル
16265 人が閲覧しました

mysql は、into outfile パラメーターを使用して、テーブル内のデータを csv にエクスポートできます。たとえば、次のコマンドを使用して、ユーザー テーブル内のデータを user.csv にエクスポートできます

select * from user into outfile '/tmp/user.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n
ログイン後にコピー

。ユーザーテーブル内のファイルは /tmp/user にエクスポートされます。
パラメータの説明:

into outfile 'エクスポートされたディレクトリとファイル名'
エクスポートされたディレクトリとファイル名を指定します

フィールドは 'フィールド区切り文字' で終了します
フィールド間の区切り文字を定義します

オプションで ' で囲まれますフィールドラッパー
フィールドを囲む文字を定義します(数値フィールドは無効です)

「行間区切り文字」で終了する行
各行の区切り文字を定義します
問題分析

上記のコマンドは問題ありませんmysql5.6で実行している場合は、mysql5.7で実行している場合、次のエラーが発生します。

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
ログイン後にコピー
ログイン後にコピー

公式ドキュメントを参照してください。secure_file_priv パラメータは、LOAD DATA、SELECT...OUTFILE、LOAD_FILE() が渡される指定されたディレクトリを制限するために使用されます。

  • secure_file_priv が NULL の場合、mysqld のインポートまたはエクスポートが制限されていることを意味します。

  • secure_file_priv が /tmp の場合、mysqld は /tmp ディレクトリでのみインポートとエクスポートを実行するように制限され、他のディレクトリでは実行できないことを意味します。

  • secure_file_priv 値がない場合は、mysqld がどのディレクトリでもインポートおよびエクスポートを制限されていないことを意味します。

secure_file_priv の値を表示します。デフォルトは NULL で、制限をインポートまたはエクスポートできないことを意味します。

mysql> show global variables like '%secure_file_priv%';
+------------------+-------+| Variable_name    | Value |
+------------------+-------+| secure_file_priv | NULL  |
+------------------+-------+1 row in set (0.00 sec)
ログイン後にコピー
ログイン後にコピー

secure_file_priv パラメータは読み取り専用パラメータであり、set global コマンドを使用して変更できないためです。

mysql> set global secure_file_priv='';
ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable
ログイン後にコピー
ログイン後にコピー

Solution

my.cnf または my.ini を開き、次のステートメントを追加して mysql を再起動します。

secure_file_priv=''
ログイン後にコピー
ログイン後にコピー

secure_file_priv の変更された値を確認します。

mysql> show global variables like '%secure_file_priv%';
+------------------+-------+| Variable_name    | Value |
+------------------+-------+| secure_file_priv |       |
+------------------+-------+1 row in set (0.00 sec)
ログイン後にコピー
ログイン後にコピー

変更後、再度実行し、エクスポートに成功します。

';
ログイン後にコピー

実行後、ユーザーテーブルのデータが/tmp/user.csvにエクスポートされます。
パラメータの説明:

into outfile 'エクスポートされたディレクトリとファイル名'
エクスポートされたディレクトリとファイル名を指定します

フィールドは'フィールド区切り文字'で終了します
フィールド間の区切り文字を定義します

オプションで'で囲まれますフィールドラッパー'
フィールドを囲む文字を定義します(数値フィールドは無効です)

「行間区切り文字」で終了する行
各行の区切り文字を定義します
問題分析

上記のコマンドは問題ありませんmysql5.6で実行している場合は、mysql5.7で実行している場合、次のエラーが発生します。

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
ログイン後にコピー
ログイン後にコピー

公式ドキュメントを参照してください。secure_file_priv パラメータは、LOAD DATA、SELECT …OUTFILE、LOAD_FILE() が渡される指定されたディレクトリを制限するために使用されます。

  • secure_file_priv が NULL の場合、mysqld のインポートまたはエクスポートが制限されていることを意味します。

  • secure_file_priv が /tmp の場合、mysqld は /tmp ディレクトリでのみインポートとエクスポートを実行するように制限され、他のディレクトリでは実行できないことを意味します。

  • secure_file_priv 値がない場合は、mysqld がどのディレクトリでもインポートおよびエクスポートを制限されていないことを意味します。

secure_file_priv の値を確認してください。デフォルトは NULL で、制限をインポートまたはエクスポートできないことを意味します。

mysql> show global variables like '%secure_file_priv%';
+------------------+-------+| Variable_name    | Value |
+------------------+-------+| secure_file_priv | NULL  |
+------------------+-------+1 row in set (0.00 sec)
ログイン後にコピー
ログイン後にコピー

secure_file_priv パラメータは読み取り専用パラメータであり、set global コマンドを使用して変更できないためです。

mysql> set global secure_file_priv='';
ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable
ログイン後にコピー
ログイン後にコピー

Solution

my.cnf または my.ini を開き、次のステートメントを追加して mysql を再起動します。

secure_file_priv=''
ログイン後にコピー
ログイン後にコピー

secure_file_priv の変更された値を確認します。

mysql> show global variables like '%secure_file_priv%';
+------------------+-------+| Variable_name    | Value |
+------------------+-------+| secure_file_priv |       |
+------------------+-------+1 row in set (0.00 sec)
ログイン後にコピー
ログイン後にコピー

変更後、再度実行し、エクスポートに成功します。

りー

以上がMysql5.7 エクスポート データ プロンプト --secure-file-priv オプションの問題の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!