TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸

MySQL Cheatsheet: Die wichtigsten Befehle

April 10, 2015

Dieses Cheatsheet fasst die grundlegenden Befehle für die Verwaltung eines MySQL- oder MariaDB-Servers über die Kommandozeile zusammen. Es deckt die Verbindung, die Benutzer- und Rechteverwaltung sowie Backup- und Wiederherstellungsprozesse ab.


1. Verbindung herstellen

Verwenden Sie den mysql-Client, um eine Verbindung zum Datenbankserver herzustellen.

code
mysql -u BENUTZERNAME -p -h HOSTNAME -P PORT datenbank_name
OptionBeschreibungStandardwert
-uDer BenutzernameAktueller Systembenutzer
-pFordert zur interaktiven Passworteingabe aufKein Passwort
-hDer Hostname oder die IP-Adresse des Serverslocalhost
-PDer Port des MySQL-Servers (Großbuchstabe!)3306

2. Datenbank- und Benutzerverwaltung

Datenbanken

code
-- Erstellt eine neue Datenbank
CREATE DATABASE meine_datenbank;

-- Zeigt alle verfügbaren Datenbanken an
SHOW DATABASES;

-- Wechselt zur Verwendung einer bestimmten Datenbank
USE meine_datenbank;

Benutzer

code
-- Erstellt einen neuen Benutzer
-- '%' erlaubt Verbindungen von jedem Host. Für mehr Sicherheit eine IP verwenden.
CREATE USER 'app_user'@'%' IDENTIFIED BY 'EinStarkesPasswort123!';

-- Ändert das Passwort für einen bestehenden Benutzer
ALTER USER 'app_user'@'%' IDENTIFIED BY 'NeuesPasswort456!';

-- Löscht einen Benutzer
DROP USER 'app_user'@'%';

-- Listet alle Benutzer und ihre Hosts auf
SELECT user, host FROM mysql.user;

Berechtigungen

code
-- Gewährt einem Benutzer alle Rechte auf eine bestimmte Datenbank
GRANT ALL PRIVILEGES ON meine_datenbank.* TO 'app_user'@'%';

-- Gewährt nur Lesezugriff (SELECT)
GRANT SELECT ON meine_datenbank.* TO 'readonly_user'@'%';

-- Zeigt die Berechtigungen für einen Benutzer an
SHOW GRANTS FOR 'app_user'@'%';

-- Widerruft eine bestimmte Berechtigung
REVOKE INSERT ON meine_datenbank.* FROM 'app_user'@'%';

-- Übernimmt alle Änderungen an den Berechtigungen
FLUSH PRIVILEGES;

3. Backup und Wiederherstellung (mysqldump)

Backup (Export)

mysqldump ist das Standard-Tool zum Erstellen von logischen Backups (SQL-Dateien).

  • Alle Datenbanken sichern:
    code
    mysqldump -u BENUTZERNAME -p --all-databases > all_databases.sql
    
  • Mehrere Datenbanken sichern:
    code
    mysqldump -u BENUTZERNAME -p --databases db1 db2 > databases.sql
    
  • Eine einzelne Datenbank komprimiert sichern:
    code
    mysqldump -u BENUTZERNAME -p meine_datenbank | gzip > meine_datenbank.sql.gz
    

Wiederherstellung (Import)

  • Aus einer SQL-Datei wiederherstellen:
    code
    mysql -u BENUTZERNAME -p meine_datenbank < backup.sql
    
  • Aus einer komprimierten Datei wiederherstellen:
    code
    gunzip < backup.sql.gz | mysql -u BENUTZERNAME -p meine_datenbank
    

4. Fehlerbehebung

  • Access denied for user ...:

    • Benutzername oder Passwort sind falsch.
    • Der Benutzer hat keine Berechtigung, sich von diesem Host (@'...') zu verbinden.
    • Die Berechtigungen wurden nach der Zuweisung nicht mit FLUSH PRIVILEGES; neu geladen.
  • Can't connect to MySQL server...:

    • Firewall: Stellen Sie sicher, dass der Port 3306 auf dem Server nicht durch eine Firewall blockiert wird.
    • bind-address: Überprüfen Sie die MySQL-Konfigurationsdatei (my.cnf oder mysqld.cnf). Wenn bind-address auf 127.0.0.1 gesetzt ist, sind nur lokale Verbindungen erlaubt. Kommentieren Sie die Zeile aus (#bind-address = ...) oder setzen Sie sie auf 0.0.0.0, um externe Verbindungen zu erlauben. Starten Sie danach den MySQL-Dienst neu.
    • Netzwerk: Prüfen Sie grundlegende Netzwerkprobleme (Ping, Routing).