 
|
| Echter Managed-Service: Wir kümmern uns für Sie um alle notwendigen
Dinge um einen stabilen und sicheren Serverbetrieb zu gewährleisten.
Das bedeutet weit mehr als nur automatische Sicherheitsupdates. |
mehr Informationen
|

 
|
| Sie kümmern sich im Wesentlichen selbst um Ihren Server, nur nach
Bedarf greifen wir mit ein. Die zuverlässige Hardware und die
Hochleistungs-Anbindung garantieren vollste Zufriedenheit. |
mehr Informationen
|

 
|
|
Der Einstieg in den Webhosting-Bereich. Für kleine bis mittlere Lösungen. Viel Leistung sowie Speicherplatz und inklusiv Traffic gepaart mit dem bekannten PromServer-Support. Immer freundlich und hilfsbereit!
|
mehr Informationen
|


|

|
  |
professional managed server |

FAQ: MySQL: Bei dem Versuch, Daten einer MySQL-Tabelle in ein *.txt-File zu exportieren bekam ich eine "Access denied" Fehlermeldung
| Artikel ID: |

|
000049 |
| Bewertung: |

|
0.7 / 5.0 (7 votes)
|
| Views: |

|
1071 |
|
Ja, diese Möglichkeit gibt es. Dafür gibt es das Tool mysqldump. Es wird unter Telnet folgendermaßen benutzt (Alles was in eckigen Klammern steht ist optional):
#>mysqldump -u username -p[passwort] dbname [tablename] [>ausgabedateiname]
Dieses Kommando macht einen vollständigen Dump der kompletten Datenbank (oder der angegebenen Tabelle), und zwar in reiner SQL-Syntax, so daß man die Daten sofort wieder in einen anderen MySql-Server einspielen kann, inkl. Tabellen anlegen etc. (Wichtig für Domain-Umzieher und Betreiber lokaler MySQL-Datenbanken)
Wer die Daten in einem allgemeinen portablen Format haben möchte (CSV, Tab-getrennt, etc), um sie z.B. mit Excel oder anderen Programmen weiter zu bearbeiten, der muß schon etwas mehr Klimmzüge machen: #>mysqldump -u username -p[passwort] dbname [table] -T . --fields-terminated-by=\; --fields-enclosed-by=\"
Dieses Kommando erstellt für die angegebene Datenbank (oder wenn angegeben, nur für die entsprechende Tabelle) .sql-Datei mit den Metadaten und .txt-Datei mit den Daten der Tabelle; im Beispiel sind die einzelnen Felder mit Semikolon getrennt und in Anführungszeichen eingeschlossen. (Das Zeichen für den Tabulator ist \\t)
Man beachte: Alle für die Bash relevanten Sonderzeichen, im Beispiel das Semikolon oder das Anführungszeichen müssen mit einem Backslash gequotet (ungültig) gemacht werden, auch der Backslash vom Tab-Zeichen \t sieht dann so \\t aus.
Der Punkt hinter dem -T steht für das Zielverzeichnis, in diesem Falle eben das aktuelle Verzeichnis. Das kann natürlich geändert werde, aber s.u.
Eine Eigenheit beim Export ist mir aufgefallen. Alle Felder, die leer (NULL) sind, werden als \N exportiert. Evt. findet ja jemand eine Lösung dafür :-)
Wenn jemand eine wirklich große Datenbank zu exportieren hat, dann sollte er die Option -q verwenden. Diese Option verhindert, daß die Daten erst im Speicher aufgebaut werden und erst danach auf die Festlpatte geschrieben werden. Damit vermeidet man ein Out-of-Memory und den Sysadmin, der einem dann im Nacken sitzt :-)
Wer jetzt voller Tatendrang aufhört zu lesen und anfängt, der hat mit Zitronen gehandelt :-) Das Teil hat nämlich einen kleinen, aber unangenehmen Bug (nur die zweite beschriebene Methode). Es legt die exportierten Daten nämlich nur in Verzeichnissen an, die der mysqld auch beschreiben kann, und zwar den kompletten Pfad bis / hinunter. Da das /home-Verzeichnis diese Bedingung nicht erfüllt, ist es ausgeschlossen, das jemals nur ein Byte Daten geschrieben wird und damit ist das ganze Procedere hinfällig.
Es gibt nur ein Verzeichnis, was diese Bedingung erfüllt, und das ist /tmp, denn /tmp ist für jedermann beschreibbar. Also schnell mit cd /tmp nach /tmp wechseln, und weil es in diesem Verzeichnis immer so unaufgeräumt aussieht, ein eigenes Verzeichnis anlegen (mkdir meindir), beschreibbar machen (chmod 0777 meindir) und hineinspringen (cd meindir) und mit dem o.g. Punkt (-T .) in das aktuelle Verzeichnis exportieren. Danach aber bitte die Daten in das eigene Homeverzeichnis kopieren und das Verzeichnis /tmp besenrein verlassen :-) (rm *; cd ..; rmdir meindir)
Für Sicherheitsbewusste: Die Daten können während des Exports von jederman gelesen und auch kopiert werden (und wenn nicht saubergemacht wird, auch danach noch)
Für !ganz! Sicherheitsbewusste: Diese Funktion nicht verwenden, sondern nur die zuerst beschriebene verwenden. Die Daten dann in einen lokalen MySQL-Server importieren oder mit einem Skript herauslösen.
mysqldump kennt noch viele weitere Optionen. Dem Interessierten sei mysql --help empfohlen.
|
|
|