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
| Option | Beschreibung | Standardwert |
|---|---|---|
-u | Der Benutzername | Aktueller Systembenutzer |
-p | Fordert zur interaktiven Passworteingabe auf | Kein Passwort |
-h | Der Hostname oder die IP-Adresse des Servers | localhost |
-P | Der 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
3306auf dem Server nicht durch eine Firewall blockiert wird. bind-address: Überprüfen Sie die MySQL-Konfigurationsdatei (my.cnfodermysqld.cnf). Wennbind-addressauf127.0.0.1gesetzt ist, sind nur lokale Verbindungen erlaubt. Kommentieren Sie die Zeile aus (#bind-address = ...) oder setzen Sie sie auf0.0.0.0, um externe Verbindungen zu erlauben. Starten Sie danach den MySQL-Dienst neu.- Netzwerk: Prüfen Sie grundlegende Netzwerkprobleme (Ping, Routing).
- Firewall: Stellen Sie sicher, dass der Port