Heim >Backend-Entwicklung >PHP-Tutorial >Lösung für das Problem mit der MySQL-Secure-File-Priv-Option

Lösung für das Problem mit der MySQL-Secure-File-Priv-Option

jacklove
jackloveOriginal
2018-06-15 17:34:108919Durchsuche

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 der Ausführung werden die Benutzertabellendaten 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


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.


Zeigen Sie 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)

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

Lösung

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

secure_file_priv=''

Ä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 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)

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 Benutzer zu exportieren. csv

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

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

In diesem Artikel wird die Lösung für das Problem der MySQL5.7-Exportdatenaufforderung mit der Option --secure-file-priv erläutert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

PHP verwendet die debug_backtrace-Methode, um Codeaufrufe zu verfolgen

MySQL führt SQL im Terminal aus und schreibt Die Ergebnisdateimethode

php verwendet einen Token-Bucket-Algorithmus, um eine Flusskontrolle basierend auf Redis zu implementieren

Das obige ist der detaillierte Inhalt vonLösung für das Problem mit der MySQL-Secure-File-Priv-Option. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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