Heim > Datenbank > MySQL-Tutorial > Hauptteil

Mysql5.7-Exportdaten-Eingabeaufforderung --secure-file-priv-Option Problemlösung

jacklove
Freigeben: 2018-06-08 15:59:50
Original
16296 Leute haben es durchsucht

MySQL kann den Parameter into outfile verwenden, um die Daten in der Tabelle nach csv zu exportieren. Beispielsweise kann der folgende Befehl verwendet werden, um die Daten der Benutzertabelle nach user.csv zu exportieren

select * from user into outfile '/tmp/user.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n
Nach dem Login kopieren

Nach der Ausführung werden die Daten der Benutzertabelle nach /tmp/user.csv exportiert.
Parameterbeschreibung:

in die Ausgabedatei „Exportiertes Verzeichnis und Dateiname“
Geben Sie das exportierte Verzeichnis und den Dateinamen an

Felder abgeschlossen durch „Feldtrennzeichen“
Definieren Sie das Trennzeichen zwischen Feldern

optional eingeschlossen durch „Feldtrennzeichen“
Definieren Sie die Zeichen, die das Feld umgeben ( Numerische Felder sind ungültig )

Zeilen, die durch „Zeilentrennzeichen“ abgeschlossen werden
Definieren Sie das Trennzeichen für jede Zeile
Problemanalyse

Oben Der Befehl läuft ohne Probleme unter mysql5.6, aber der folgende Fehler tritt auf, wenn es unter mysql5.7 ausgeführt wird.

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
Nach dem Login kopieren
Nach dem Login kopieren

Sehen Sie sich die offizielle Dokumentation an. Der Parameter secure_file_priv wird verwendet, um das angegebene Verzeichnis einzuschränken, an das LOAD DATA, SELECT …OUTFILE, LOAD_FILE() übergeben wird.

  • secure_file_priv ist NULL, was darauf hinweist, dass mysqld vom Import oder Export ausgeschlossen ist.

  • Wenn secure_file_priv /tmp ist, bedeutet dies, dass mysqld nur auf die Durchführung von Importen und Exporten im Verzeichnis /tmp beschränkt ist und diese nicht in anderen Verzeichnissen ausführen kann.

  • secure_file_priv Wenn kein Wert vorhanden ist bedeutet dies, dass mysqld nicht auf den Import und Export in beliebige Verzeichnisse beschränkt ist.

Sehen Sie sich den Wert von secure_file_priv an. Der Standardwert ist NULL, was bedeutet, dass die Einschränkung nicht importiert oder exportiert werden kann.

mysql> show global variables like '%secure_file_priv%';
+------------------+-------+| Variable_name    | Value |
+------------------+-------+| secure_file_priv | NULL  |
+------------------+-------+1 row in set (0.00 sec)
Nach dem Login kopieren
Nach dem Login kopieren

Da der Parameter secure_file_priv ein schreibgeschützter Parameter ist und nicht mit dem Befehl „set global“ geändert werden kann.

mysql> set global secure_file_priv='';
ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable
Nach dem Login kopieren
Nach dem Login kopieren

Lösung

Öffnen Sie my.cnf oder my.ini, fügen Sie die folgende Anweisung hinzu und starten Sie MySQL neu.

secure_file_priv=''
Nach dem Login kopieren
Nach dem Login kopieren

Den geänderten Wert von secure_file_priv anzeigen

mysql> show global variables like '%secure_file_priv%';
+------------------+-------+| Variable_name    | Value |
+------------------+-------+| secure_file_priv |       |
+------------------+-------+1 row in set (0.00 sec)
Nach dem Login kopieren
Nach dem Login kopieren

Nach der Änderung erneut ausführen und erfolgreich exportieren.

';
Nach dem Login kopieren

Nach der Ausführung werden die Daten der Benutzertabelle nach /tmp/user.csv exportiert.
Parameterbeschreibung:

in die Ausgabedatei „Exportiertes Verzeichnis und Dateiname“
Geben Sie das exportierte Verzeichnis und den Dateinamen an

Felder abgeschlossen durch „Feldtrennzeichen“
Definieren Sie das Trennzeichen zwischen Feldern

optional eingeschlossen durch „Feldtrennzeichen“
Definieren Sie das Zeichen, das das Feld umgibt ( Numerische Felder sind ungültig)

Zeilen, die durch „Interline-Trennzeichen“ abgeschlossen werden
Definieren Sie das Trennzeichen für jede Zeile
Problemanalyse

Oben Der Befehl wird ohne Probleme ausgeführt unter mysql5.6, aber der folgende Fehler tritt auf, wenn er unter mysql5.7 ausgeführt wird.

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
Nach dem Login kopieren
Nach dem Login kopieren

Sehen Sie sich die offizielle Dokumentation an. Der Parameter secure_file_priv wird verwendet, um einzuschränken, an welches angegebene Verzeichnis LOAD DATA, SELECT …OUTFILE, LOAD_FILE() übergeben wird. Wenn

  • secure_file_priv NULL ist, bedeutet dies, dass mysqld vom Import oder Export ausgeschlossen ist.

  • Wenn secure_file_priv /tmp ist, bedeutet dies, dass mysqld nur auf die Ausführung von Import und Export im Verzeichnis /tmp beschränkt ist und es nicht in anderen Verzeichnissen ausführen kann.

  • secure_file_priv Wenn kein Wert vorhanden ist bedeutet dies, dass mysqld nicht auf den Import und Export in beliebige Verzeichnisse beschränkt ist.

Sehen Sie sich den Wert von secure_file_priv an. Der Standardwert ist NULL, was bedeutet, dass die Einschränkung nicht importiert oder exportiert werden kann.

mysql> show global variables like '%secure_file_priv%';
+------------------+-------+| Variable_name    | Value |
+------------------+-------+| secure_file_priv | NULL  |
+------------------+-------+1 row in set (0.00 sec)
Nach dem Login kopieren
Nach dem Login kopieren

Da der Parameter secure_file_priv ein schreibgeschützter Parameter ist und nicht mit dem Befehl „set global“ geändert werden kann.

mysql> set global secure_file_priv='';
ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable
Nach dem Login kopieren
Nach dem Login kopieren

Lösung

Öffnen Sie my.cnf oder my.ini, fügen Sie die folgende Anweisung hinzu und starten Sie MySQL neu.

secure_file_priv=''
Nach dem Login kopieren
Nach dem Login kopieren

Den geänderten Wert von secure_file_priv anzeigen

mysql> show global variables like '%secure_file_priv%';
+------------------+-------+| Variable_name    | Value |
+------------------+-------+| secure_file_priv |       |
+------------------+-------+1 row in set (0.00 sec)
Nach dem Login kopieren
Nach dem Login kopieren

Nach der Änderung erneut ausführen und erfolgreich exportieren.

mysql> select * from user into outfile '/tmp/user.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n';
Query OK, 15 rows affected (0.00 sec)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonMysql5.7-Exportdaten-Eingabeaufforderung --secure-file-priv-Option Problemlösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage