MySQL unter Linux einrichten – Wie fange ich an?

MySQL ist eine der in Open Source Welt sehr verbreitete Datenbank. Teilweise liegt das sicher auch daran, dass sie unter diversen Linux-Distributionen sehr einfach zu installieren ist oder sogar direkt mit installiert wird.

Nach dem Installieren steht man dann aber mit einem tollen, laufenden Daemon da. Wie fängt man an?

  • Wie setzt man das Passwort für den Datenbank-Admin „root“?
  • Wie greift man auf den Datenbank-Dienst zu?
  • Wie legt man eine neue Datenbank an?
  • Wie legt man neue User an?
  • Wie setzt man Berechtigungen für diese User?

Das steht eigentlich alles auch in der Dokumentation drin – aber dummerweise in Form einer Befehls-Referenz, so dass man eigentlich schon wissen oder ahnen muss, wonach man genau sucht, um auch fündig zu werden.

Also – wie fängt man an?

Diese Beschreibung gilt für eine frische Installation unter Debian Linux, wird sich aber bei anderen Linux-Distributionen vermutlich nur in Details unterscheiden.

Schritt 1: Ein Passwort für den Datenbank-Admin „root“

Nach der Installation mit apt-get oder aptitude hat der Datenbank-Admin noch kein Passwort. Das sollte man schnellstens ändern, indem man an der Shell das Tool „mysqladmin“ aufruft:

# mysqladmin -u root password [NEUES-PASSWORT]

Schritt 2: Einloggen auf der Datenbank

Zum Zugriff auf der Datenbank gibt es das Client Programm „mysql„. Als Parameter übergibt man diesem den Usernamen und die Information, dass man sich mit einem Passwort einloggen möchte. Wenn man auf eine bestimmte Datenbank auf dem Server zugreifen möchte, so gibt man auch deren Namen als Parameter mit.

# mysql -u root -p

Nach dem Einloggen sieht das ganze eigentlich nicht viel anders aus als eine ganz normale Shell. Auf den ersten Blick wirkt nur vielleicht der Eingabeprompt etwas befremdlich („mysql>“). An dieser Stelle werden jetzt aber SQL-Befehle an den DB-Server übergeben. Die Befehle müssen jeweils mit einem Semikolon „;“ abgeschlossen werden. Wenn man nur Return drückt, so kann man den SQL-Befehl auf mehrere Zeilen weiterschreiben, bis eben ein Semikolon kommt.

Schritt 3: Das Anlegen einer neuen Datenbank

Eine neue Datenbank legt man an, indem man sich mittels „mysql“ in die Datenbank einloggt und dann den SQL-Befehl „CREATE DATABASE“ verwendet.

(Man kann auch über „mysqladmin“ eine neue Datenbank anlegen. Ich bevorzuge aber den Weg über den SQL-Befehl.)

mysql> CREATE DATABASE neuedatenbank;

CREATE DATABASE kann noch einen Haufen weitere Parameter annehmen (Beispielsweise die Zeichencodierung). Diese sind in der Dokumentation zu finden.

Schritt 4: Das Anlegen eines neuen Datenbank-Users

User legt man konsequenterweise mit dem ähnlich klingenden Befehl „CREATE USER“ an:

mysql> CREATE USER neueruser@localhost
IDENTIFIED BY 'neuespasswort';

Schritt 5: Zugriffsberechtigungen in MySQL setzen

Danach muss man dem User noch Rechte auf die Datenbank geben. Das geht mit dem Befehl „GRANT„:

mysql> GRANT ALL ON neuedatenbank.* TO neueruser@localhost;

Damit hat der User ALLE Rechte auf der entsprechenden Datenbank. Alternativ kann man ihm auch beispielsweise nur SELECT und INSERT („SELECT, INSERT“ statt „ALL“) oder auch nur Zugriff auf eine bestimmte Tabelle erlauben („neuedatenbank.tabelle“ statt „neuedatenbank.*“)

Danach ist es sinnvoll erst mal den Befehl „FLUSH PRIVILEGES;“ abzufeuern, damit auch sichergestellt wird, dass die neu angelegten Zugriffsberechtigungen auch auf jeden Fall gelesen werden.

Schritt 6: Tools zur Administration

Zum Loslegen ist das erst mal genug. Ich würde danach möglichst schnell auf ein Admin-Werkzeug wie beispielsweise phpMyAdmin (PHP-basierte Weboberfläche) oder HeidiSQL (Windows) umsatteln, weil die Bedienung über die Konsole etwas mühselig ist.

Wenn man von Extern auf die Datenbank zugreifen will (beispielsweise über den Windows Client HeidiSQL), so muss man die Datenbank auf eine externe IP lauschen lassen. Das stellt man in der MySQL-Konfiguration my.cnf ein. Für „Produktivsysteme“ würde ich aus Sicherheitsgründen davon aber abraten, so lange diese IP für jeden aus dem Internet zugänglich ist. Für Entwicklungs-Systeme im hausinternen Netzwerk gilt diese Einschränkung natürlich nicht.

Ausserdem muss natürlich auch ein User existieren, der sich von extern einloggen kann. User neueruser@localhost könnte das nicht, da er ja dann nicht von localhost käme.

9 Antworten auf „MySQL unter Linux einrichten – Wie fange ich an?“

  1. Ich bin mit den Tools von MySQL AB nicht so recht warm geworden – was aber teilweise sicher auch Geschmacksache ist.

    Ich muss an dieser Stelle ganz ehrlich sagen, dass ich bisher leider für Windows noch keinen Client gefunden habe, der auch nur annähernd an das herangekommen ist, was ich vorher von Microsoft SQL gewöhnt war.

  2. Unter Debian gibt es auch noch /usr/bin/mysql_secure_installation, welches ein root-pwd setzt, für alle schreibbare Test-Tabellen und Guest-Accounts deaktiviert etc.

  3. Danke für den Tipp. Ich hab hier einen „Beispieldurchlauf“ dieses Scripts gefunden: prefetch.net.

    Allerdings hatte ich bei meinen Installationen von MySQL noch nie einen anonymous-User oder eine test-Datenbank mit dabei. Die beiden scheint zumindest bei den Debian-Packages nicht mit installiert zu werden. In so fern reicht auch einfach der Aufruf der Funktion zum Passwort-Setzen mit mysqladmin, um das gleiche Ergebnis wie dieses Script zu bekommen.

    Allerdings ist es mit erklärenden Kommentaren und einer Art Wizard natürlich gleich etwas komfortabler 😉

  4. Kostenpflichtige UIs habe ich auch schon einige ausprobiert, aber irgendwie waren die alle preislich jenseits meiner Schmerzensgrenze von $100 angesiedelt. Das bin ich für Tools, die kaum mehr bieten als die kostenlosen Optionen, nicht bereit zu zahlen.

  5. Danke für die Erklärung. Habe schon lange danach rum gesucht, ohne Erfolg. Bin jetzt ein gutes Stück weiter

Kommentare sind geschlossen.