Installationsanleitungen

MySQL installieren und die erste Datenbank

Wir zeigen Schritt für Schritt, wie Sie den MySQL-Server auf drei Betriebssystemen installieren, Benutzer und Rechte sicher definieren und die erste Datenbank samt Tabelle anlegen.

Aurora YazılımRedaktionsteam 6 Min. Lesezeit
MySQL installieren und die erste Datenbank
Wie installiert man MySQL?

Für die MySQL-Installation laden Sie unter Windows und macOS von dev.mysql.com den Installer der LTS-Version herunter und legen ein root-Passwort fest; unter Ubuntu genügt sudo apt install mysql-server. Nach der Installation verbinden Sie sich mit mysql -u root -p, legen mit CREATE DATABASE die erste Datenbank an und erstellen für Ihre Anwendung einen eigenen Benutzer, der nur auf diese Datenbank zugreifen darf.

Was ist MySQL, warum wird es gewählt?

MySQL speichert Daten in Tabellen, wird mit der Sprache SQL abgefragt und gehört zu den weltweit verbreitetsten relationalen Datenbanksystemen. Websites, Onlineshops sowie Reservierungs- und Lagerverwaltungsanwendungen setzen im Hintergrund häufig MySQL oder das kompatible MariaDB ein.

MySQL gibt es in zwei Versionslinien: LTS-Versionen mit langem Support und Innovation Releases, die neue Funktionen früher bringen. Für Geschäftsprojekte und zum Lernen wählen Sie LTS; welche Version aktuell die LTS-Version ist, sehen Sie auf der Downloadseite von dev.mysql.com.

In dieser Anleitung installieren wir den MySQL Community Server, also die kostenlose Community-Edition. Wenn Sie nur schnell mit PHP experimentieren möchten, genügt auch ein fertiges Paket mit MariaDB; das haben wir in unserer Anleitung zur XAMPP-Installation beschrieben.

MySQL unter Windows installieren

Wählen Sie auf der Downloadseite den MSI-Installer für Windows. Bei aktuellen Versionen öffnet sich nach der Installation der MySQL Configurator und führt Sie Schritt für Schritt durch die Servereinstellungen; bei älteren Versionen übernahm das der MySQL Installer. Verlangt die Downloadseite eine Anmeldung mit Oracle-Konto, laden Sie über den Link »No thanks, just start my download« direkt herunter.

  1. Wählen Sie als Setup-Typ für einen Entwicklungsrechner das Profil Development Computer; es hält den Speicherverbrauch niedrig.
  2. Belassen Sie bei den Verbindungseinstellungen den Standard-Port 3306; nutzt auf dem Rechner eine andere Datenbank diesen Port, geben Sie einen Wert wie 3307 ein.
  3. Behalten Sie bei der Authentifizierungsmethode die empfohlene starke Verschlüsselung bei.
  4. Legen Sie das root-Passwort fest und notieren Sie es an einem sicheren Ort; es gehört zum mächtigsten Konto auf dem Server.
  5. Registrieren Sie MySQL als Windows-Dienst und lassen Sie ihn beim Hochfahren des Rechners starten.
  6. Wenden Sie im letzten Schritt die Einstellungen an; sind alle Schritte grün bestätigt, ist der Server bereit.

Installation unter macOS und Linux

Unter macOS installiert das offizielle DMG-Paket ein Bedienfeld in den Systemeinstellungen, über das Sie den Server starten und stoppen. Mit Homebrew erledigen Sie Installation und Dienstverwaltung mit zwei Befehlen.

Unter Ubuntu und Debian liegt der MySQL-Server im Repository der Distribution. Unter Ubuntu wird der Benutzer root nach der Installation standardmäßig per auth_socket authentifiziert; Sie verbinden sich also statt mit Passwort mit dem Befehl sudo mysql. Auf beiden Systemen empfehlen wir, nach der Installation das Skript mysql_secure_installation auszuführen: Es entfernt anonyme Benutzer und die Testdatenbank und schaltet den Fernzugriff für root ab.

bashmacOS (Homebrew)
brew install mysql
brew services start mysql
mysql_secure_installation
bashUbuntu / Debian
sudo apt update
sudo apt install mysql-server
sudo systemctl status mysql

# Sicherheitseinstellungen
sudo mysql_secure_installation

# Nicht als root verbinden (auth_socket)
sudo mysql

Installation überprüfen

Prüfen Sie mit den folgenden Befehlen, ob der Server läuft und Sie sich verbinden können. Der Befehl mysql -u root -p fragt nach Ihrem Passwort; sehen Sie mit dem richtigen Passwort die Eingabeaufforderung mysql>, ist die Installation abgeschlossen. Vergessen Sie nicht, SQL-Befehle innerhalb des Servers mit einem Semikolon abzuschließen.

bashTerminal
mysql --version
mysql -u root -p
sqlmysql>-Eingabeaufforderung
SELECT VERSION();
SHOW DATABASES;
EXIT;

MySQL-Datenbank anlegen

Wählen Sie beim Anlegen einer neuen Datenbank gleich den richtigen Zeichensatz; das erspart später Probleme mit Sonderzeichen und Emojis. In aktuellen MySQL-Versionen ist utf8mb4 bereits der Standardzeichensatz, dennoch ist es eine gute Gewohnheit, ihn im Befehl ausdrücklich anzugeben. Wenn Sie türkische Sortierregeln benötigen, können Sie die Kollation utf8mb4_tr_0900_ai_ci verwenden.

Anschließend legen wir die erste Tabelle an. Das Beispiel zeigt eine einfache Produkttabelle: Für den Preis wird der Typ DECIMAL statt Fließkomma verwendet, weil bei Geldbeträgen keine Rundungsfehler zulässig sind.

  • PRIMARY KEY identifiziert jede Zeile eindeutig; AUTO_INCREMENT vergibt die Nummer automatisch.
  • Die Storage-Engine InnoDB unterstützt Transaktionen und Fremdschlüssel und ist in aktuellen Versionen der Standard.
  • Indizes auf häufig durchsuchten Spalten beschleunigen Abfragen; jeder überflüssige Index verlangsamt jedoch Schreibvorgänge.
sqlDatenbank und Tabelle
CREATE DATABASE magaza
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_tr_0900_ai_ci;

USE magaza;

CREATE TABLE urunler (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  ad VARCHAR(150) NOT NULL,
  fiyat DECIMAL(10,2) NOT NULL,
  stok INT NOT NULL DEFAULT 0,
  olusturma DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

INSERT INTO urunler (ad, fiyat, stok) VALUES ('Beispielprodukt', 10.00, 25);
SELECT * FROM urunler;

MySQL-Benutzer anlegen und Rechte vergeben

Verbinden Sie Ihre Anwendung niemals mit dem Benutzer root mit der Datenbank. Legen Sie für jede Anwendung einen eigenen Benutzer an, der nur auf seine eigene Datenbank zugreift und nur die Operationen ausführen darf, die er braucht. So bleibt der Schaden selbst bei einer Sicherheitslücke auf diese Datenbank begrenzt.

Der Teil 'localhost' neben dem Benutzernamen legt fest, von wo Verbindungen akzeptiert werden. Liegen Anwendung und Datenbank auf demselben Server, genügt localhost; ist ein Fernzugriff nötig, erlauben Sie nur eine bestimmte IP-Adresse und vermeiden Sie es, mit '%' für alle zu öffnen.

sqlAnwendungsbenutzer
CREATE USER 'magaza_app'@'localhost' IDENTIFIED BY 'Guclu-Bir-Sifre-2!';

GRANT SELECT, INSERT, UPDATE, DELETE ON magaza.* TO 'magaza_app'@'localhost';

SHOW GRANTS FOR 'magaza_app'@'localhost';

-- Passwort ändern und Benutzer löschen
ALTER USER 'magaza_app'@'localhost' IDENTIFIED BY 'Yeni-Sifre-3!';
DROP USER 'magaza_app'@'localhost';

Grafische Verwaltung mit MySQL Workbench

Wenn Sie statt der Kommandozeile eine grafische Oberfläche bevorzugen, ist MySQL Workbench das offizielle Desktop-Werkzeug von MySQL. Auf dem Verbindungsbildschirm klicken Sie auf das Pluszeichen und geben Serveradresse (127.0.0.1), Port (3306) und Benutzernamen ein; mit der Schaltfläche Test Connection prüfen Sie die Einstellungen.

In Workbench können Sie Tabellen visuell entwerfen, Abfragen schreiben und Ergebnisse tabellarisch ansehen sowie über das Menü Server Daten exportieren und importieren. Im Abfragefenster führt Strg+Enter den Befehl aus, in dem der Cursor steht.

Sichern und Wiederherstellen

Der Exportbildschirm in Workbench nutzt im Hintergrund das Werkzeug mysqldump. Dasselbe können Sie auch im Terminal tun; für regelmäßige, automatische Sicherungen lässt sich dieser Befehl als geplante Aufgabe einrichten. Solange Sie nicht ab und zu testen, ob sich das Backup wiederherstellen lässt, haben Sie keine Sicherung.

bash
# Yedek al
mysqldump -u root -p magaza > magaza.sql

# Wiederherstellen
mysql -u root -p magaza < magaza.sql

Häufige Verbindungsfehler und Lösungen

Die meisten Probleme mit MySQL betreffen Verbindung, Authentifizierung und Passwortrichtlinie. Die Fehlernummer ist der schnellste Weg, die Ursache zu verstehen.

  • ERROR 1045 Access denied: Benutzername, Passwort oder Verbindungsadresse (localhost / 127.0.0.1) sind falsch. Prüfen Sie mit SELECT user, host FROM mysql.user;, für welche Adresse der Benutzer angelegt wurde.
  • ERROR 2002 / 2003 Can't connect: Der Server läuft nicht. Starten Sie den MySQL-Dienst unter Windows in der Dienste-Ansicht, unter Linux mit sudo systemctl start mysql.
  • ERROR 1819 Passwortrichtlinie: Die Komponente validate_password lehnt ein schwaches Passwort ab; wählen Sie ein längeres Passwort mit Großbuchstaben, Ziffern und Sonderzeichen.
  • Port 3306 belegt: Auf dem Rechner läuft eine andere Datenbank wie XAMPP; stoppen Sie eine davon oder ändern Sie einen der Ports.
  • Authentifizierungsfehler eines alten Clients: Aktuelles MySQL nutzt standardmäßig caching_sha2_password; aktualisieren Sie Ihre Client-Bibliothek.

MySQL mit der Anwendung verbinden

Der empfohlene Weg, in PHP-Projekten eine Verbindung zu MySQL herzustellen, sind PDO und vorbereitete Abfragen (Prepared Statements); sie bieten einen grundlegenden Schutz vor SQL-Injection. Statt die Zugangsdaten in den Code zu schreiben, halten Sie sie in einer Umgebungsdatei, die nicht in Git landet. Zur Verwaltung von PHP-Abhängigkeiten hilft Ihnen unsere Anleitung zur Composer-Installation.

Wenn Sie eine andere Datenbank erwägen, können Sie beide Systeme mit unserem Beitrag zur PostgreSQL-Installation vergleichen. Weitere Inhalte finden Sie auf der Seite zum Schlagwort Datenbank.

Das Datenbankdesign beeinflusst die Geschwindigkeit einer Website oder eines Shopsystems unmittelbar: Falsche Indizes oder überflüssige Abfragen lassen Seiten spät laden. Solche Engpässe messen und beseitigen wir in unserer Speed- und Performance-Optimierung; auch bei Projekten für Unternehmenswebsites bauen wir die Datenbank von Anfang an mit diesem Blick auf.

phpVerbindung mit PDO
<?php
$pdo = new PDO(
    'mysql:host=localhost;dbname=magaza;charset=utf8mb4',
    'magaza_app',
    getenv('DB_SIFRE'),
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);

$sorgu = $pdo->prepare('SELECT ad, stok FROM urunler WHERE id = ?');
$sorgu->execute([1]);
print_r($sorgu->fetch());

Häufig gestellte Fragen

01Was ist der Unterschied zwischen MySQL und MariaDB?

MariaDB ist eine von MySQL abgeleitete, weitgehend kompatible Datenbank. Die grundlegenden SQL-Befehle und die meisten Anwendungen funktionieren in beiden gleich; in neuen Versionen unterscheiden sich jedoch einige Funktionen und Standardeinstellungen. Nutzen Sie daher lokal dasselbe System wie auf dem Live-Server.

02Ist MySQL kostenlos?

Der MySQL Community Server ist kostenlos und Open Source. Es gibt außerdem kostenpflichtige Enterprise-Versionen von Oracle mit zusätzlichen Werkzeugen und Support; für die meisten Webprojekte genügt die Community-Edition.

03Ich habe das root-Passwort vergessen, was tun?

Folgen Sie den Schritten zum Zurücksetzen des Passworts in der offiziellen Dokumentation: Der Server wird vorübergehend unter Umgehung der Rechteprüfung gestartet, und mit ALTER USER wird ein neues Passwort gesetzt. Nutzt root unter Ubuntu auth_socket, verbinden Sie sich mit sudo mysql ohne Passwort und nehmen die Änderung direkt vor.

MySQL in der LTS-Version installieren, das Sicherheitsskript ausführen, der Anwendung einen eigenen Benutzer mit begrenzten Rechten geben und regelmäßig sichern: Das ist das Fundament einer soliden Datenbank. Wenn Sie für Ihr Unternehmen ein maßgeschneidertes System vom Datenbankdesign bis zur Oberfläche entwickeln lassen möchten, werfen Sie einen Blick auf die individuellen Softwarelösungen von Aurora Yazılım oder nehmen Sie Kontakt mit uns auf.