↑ ↓ auswählen, Enter öffnen, Esc schließen

MySQL und MariaDB

Datenbanken sichern, einspielen, prüfen und optimieren. Dazu Benutzer und Rechte verwalten und herausfinden, welche Tabelle oder Abfrage bremst.

19 Einzeiler: 13 harmlos, 4 vorsicht, 2 destruktiv

Alle Datenbanken in eine gepackte Datei sichern

#mysqldump --single-transaction --quick --all-databases --routines --events | gzip > /root/alle-datenbanken.sql.gz
harmlos

Alle MySQL-Benutzer mit Host auflisten

#mysql -e 'SELECT user, host FROM mysql.user ORDER BY user;'
harmlos

Alle Tabellen auf Fehler prüfen

#mysqlcheck --all-databases --check --silent
harmlos

Datenbank endgültig löschen

#mysql -e 'DROP DATABASE wp_alt;'
destruktiv

Datenbank mit eigenem Benutzer anlegen

#mysql -e "CREATE DATABASE wp_example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wp_example_user'@'localhost' IDENTIFIED BY 'SicheresPasswort'; GRANT ALL PRIVILEGES ON wp_example.* TO 'wp_example_user'@'localhost';"
vorsicht

Die 20 größten Tabellen des Servers finden

#mysql -e 'SELECT table_schema, table_name, ROUND((data_length + index_length) / 1024 / 1024, 1) AS mb, table_rows FROM information_schema.tables ORDER BY data_length + index_length DESC LIMIT 20;'
harmlos

Einzelne Datenbank konsistent und gepackt sichern

$mysqldump --single-transaction --quick -u dbuser -p wp_example | gzip > /var/www/vhosts/example.com/wp_example.sql.gz
harmlos

Gepackten SQL-Dump in eine Datenbank einspielen

$gunzip -c /var/www/vhosts/example.com/wp_example.sql.gz | mysql -u dbuser -p wp_example
destruktiv

Größe aller Datenbanken in MB anzeigen

#mysql -e 'SELECT table_schema AS db, ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS mb FROM information_schema.tables GROUP BY table_schema ORDER BY mb DESC;'
harmlos

Hängende MySQL-Abfrage gezielt abbrechen

#mysql -e 'KILL 12345;'
vorsicht

Jede Datenbank in eine eigene gepackte Datei sichern

#for db in $(mysql -NBe 'SHOW DATABASES' | grep -Ev '^(information_schema|performance_schema|sys)$'); do mysqldump --single-transaction --quick "$db" | gzip > "/root/db-backup/$db.sql.gz"; done
harmlos

Kurzstatus des Datenbankservers anzeigen

#mysqladmin version
harmlos

Laufende MySQL-Abfragen ohne Leerlauf anzeigen

#mysql -e "SELECT id, user, db, time, state, LEFT(info, 100) AS query FROM information_schema.processlist WHERE command <> 'Sleep' ORDER BY time DESC;"
harmlos

Maximale Verbindungen und bisherige Spitze vergleichen

#mysql -e "SHOW GLOBAL STATUS LIKE 'Max_used_connections'; SHOW GLOBAL VARIABLES LIKE 'max_connections';"
harmlos

MySQL-Konsole als Plesk-Admin öffnen

#plesk db
harmlos

Plesk-MySQL-Admin in Skripten und Einzeilern nutzen

#MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin -e 'SHOW DATABASES;'
vorsicht

Rechte eines MySQL-Benutzers anzeigen

#mysql -e "SHOW GRANTS FOR 'dbuser'@'localhost';"
harmlos

Slow-Query-Log nach den langsamsten Abfragen auswerten

#mysqldumpslow -s t -t 10 /var/log/mysql/mariadb-slow.log
harmlos

Slow-Query-Log zur Laufzeit aktivieren

#mysql -e 'SET GLOBAL slow_query_log = 1; SET GLOBAL long_query_time = 2; SHOW VARIABLES LIKE "slow_query_log_file";'
vorsicht

Erst lesen, dann ausführen.

Die Befehle auf myline.de greifen direkt in Server, Dateien und Datenbanken ein. Ein falscher Pfad oder Platzhalter kann Daten unwiderruflich löschen oder einen Server unerreichbar machen.

  • Alle Befehle werden ohne Gewähr bereitgestellt und sind nicht auf jedem System getestet.
  • Vor dem Ausführen verstehen, was ein Befehl tut, und jeden Platzhalter prüfen.
  • Vorher ein Backup anlegen und möglichst zuerst auf einem Testsystem ausprobieren.
  • Die Ausführung erfolgt auf eigene Verantwortung. Eine Haftung für Schäden ist ausgeschlossen, soweit gesetzlich zulässig.