MySQL für SuSE 11.x

Um MySQL zu installieren, lassen wir dies laufen
yast2 -i mysql mysql-client mysql-shared perl-DBD-mysql perl-DBI perl-Data-ShowTable libmysqlclient-devel

Anlegen der System startup links für MySQL und starten der Database:
chkconfig --add mysql
/etc/init.d/mysql start

Überprüfen ob das Netzwerk aktiviert ist.
netstat -tap | grep mysql

Die Ausgabe sollte wie folgt aussehen
tcp        0      0 *:mysql                 *:*                     LISTEN      2891/mysqld

Falls Du nicht solch eine Zeile sehen solltest, kommentiere die Zeile skip-networking in /etc/my.cnf aus:
vi /etc/my.cnf

[...]
#skip-networking
[...]
 

und restarte den MySQL server:
/etc/init.d/mysql restart

...page...

MySQL Syntax Beispiele

Secure MySQL Installation

um eine sichere MySQL Installation einzurichten, folgendes Kommando ausführen
mysqladmin -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 Directory
vi $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.


Das Originaldokument ist zu finden unter http://ccf-it.de/tiki-5.0/tiki-index.php?page=MySQL_SuSE11