Inhaltsverzeichnis
MySQL Syntax Beispiele
Secure MySQL Installation
um eine sichere MySQL Installation einzurichten, folgendes Kommando ausführenmysqladmin -u root password ????????
um ein Passwort für den Nutzer root@localhost einzurichten.
Passworder für remote Zugriffe einrichten
MySQL hört nicht nur auf dem lokalen Host sondern ist LISTEN auf allen IP's, was bedeutet, dass von außen darauf zugegriffen werden kann. Daher müssen wir auch ein Passwort für den Benutzer einrichten.Connect mit MySQL:
mysql -u root -p
Eingabe des Password für den MySQL Root Benutzer, gib folgendes in die MySQL Kommandozeile ein:
mysql> USE mysql; mysql> SELECT * FROM user;
Die Ausgabe könnte wie folgt aussehen:
+-----+--+---------------+-----+-----+-----+-------+... | Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv |... +-----+--+---------------+-----+-----+-----+-------+... | localhost | root | *5172022923C5A97E5A842DA249B93473314416D5 | Y | Y | Y | Y |... | testserver | root | | Y | Y | Y | Y... | 127.0.0.1 | root | | Y | Y | Y | Y |... +-----+--+---------------+-----+-----+-----+-------+... 3 rows in set (0.00 sec)
Wie Du siehst, heißt es in der zweiten Zeile testserver an Stelle von testserver.ccf-xxx.xxx in der Host Spalte. Wir werden dies nun durch testserver.ccf-xxx.xxx ersetzen:
mysql> UPDATE user SET Host = ’testserver.ccf-xxx.xxx’ WHERE Host = ’testserver′; mysql> FLUSH PRIVILEGES; mysql> quit;
In der shell Kommandozeile, können wir das MySQL Passwort für den User einrichten:
mysqladmin -h server1.example.com -u root password ????????
Backup mit mysqldump
mysqldump ist ein Kommandozeilentool. Für ein Backup führt man folgenden Befehl aus:mysqldump -uUSERNAME -p -hHOSTNAME DATENBANKNAME > DATENBANKNAME.sql
USERNAME, HOSTNAME und DATENBANKNAME müssen natürlich durch die eigenen Daten ersetzt werden. Das Passwort wird nach dem Starten des Befehls abgefragt. Das Tool erzeugt dann eine Datei DATENBANKNAME.sql, welche die komplette Datenbank enthält.
Restore der gesicherten Daten
mysql -uUSERNAME -p -hHOSTNAME DATENBANKNAME < DATENBANKNAME.sql
CSV-Datei in MySQL importieren
Das folgende SQL-Kommando liest eine Datei ein, bei der die Datensätze optional mit Anführungszeichen eingeschlossen sind und durch Semikolons getrennt sind. Vorhandene Datensätze in der Tabelle, die ebenfalls im Import enthalten sind, werden durch den Import überschrieben.LOAD DATA LOCAL INFILE '/home/mysql/import.csv' REPLACE INTO TABLE TableName FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"';
Tabelle exportieren im CVS File Format
Die Umkehrung von LOAD DATA INFILE ist das SELECT INTO OUTFILE, eine Variante des regulären SELECT.SELECT * INTO OUTFILE '/home/mysql/export.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM TableName;
Das Kommando wird die Datei auf dem Rechner anlegen, auf dem der Datenbankserver läuft und die Datei wird dem Benutzer gehören, unter dessen User-ID der Datenbankserver abläuft. Der Datenbankserver wird eine existierende Datei nicht überschreiben.
Automatisches login
Für ein automatisches login editiere ~/.my.cnf File in deinem Home Directoryvi $HOME/.my.cnf
und erzeuge folgende Zeilen
[client] host=localhost user=your_login password=your_password
ändere die Berechtigung für ~/.my.cnf und teste den auto login:
chmod 400 ~/.my.cnf mysql digikam4
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9252 Server version: 5.1.41-3ubuntu12.10 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Unicode: Immer wieder Ärger mit dem UTF8
Intern benutzt MySQL seit Version 4.0 zum Speichern von Daten UTF8.Um die Abwärtskompatibilität zu gewährleisten, kann MySQL aber Daten in jedem gewünschten Zeichensatz verarbeiten. Beim Aufbau der Verbindung muß daher immer festgelegt werden, in welchem Format die Daten geschrieben bzw. gelesen werden sollen. Dies geschieht meistens durch den Befehl SET NAMES char_enc. char_enc steht dabei für einen Zeichensatz (also z.B. utf8 oder latin1).
Durch SET NAMES latin1 "einigen" sich beispielsweise ein Skript und der MySQL-Server darauf, daß der Datenaustausch zwischen beiden über latin1-kodierte Daten geschieht. MySQL nimmt latin1-Daten entgegen und wandelt sie intern in utf8. Umgekehrt liest MySQL utf8-Daten aus, wandelt sie in latin1 um und liefert sie an das Skript.