MySQL und MariaDB sind die beliebtesten relationalen Datenbanken für Webprojekte. MariaDB ist ein Fork von MySQL und weitgehend kompatibel. In dieser Anleitung zeigen wir Installation und Absicherung.
MySQL vs. MariaDB
MariaDB wurde 2009 als Fork von MySQL gegründet, nachdem Oracle MySQL übernommen hatte. Für die meisten Anwendungsfälle sind beide austauschbar.
| Aspekt | MySQL | MariaDB | |--------|-------|---------| | Lizenz | Dual (GPL + proprietär) | GPL | | Entwicklung | Oracle | Community | | Performance | Sehr gut | Sehr gut (teils besser) | | Kompatibilität | - | MySQL-kompatibel |
Empfehlung: Für neue Projekte empfehlen wir MariaDB - vollständig Open Source und aktive Entwicklung.
Installation unter Ubuntu/Debian
MariaDB installieren
apt update
apt install mariadb-server mariadb-clientMySQL installieren
apt update
apt install mysql-server mysql-clientDienst prüfen
systemctl status mariadb
# oder
systemctl status mysqlGrundlegende Absicherung
Nach der Installation sollten Sie unbedingt das Sicherheitsskript ausführen:
mysql_secure_installationDas Skript fragt mehrere Sicherheitsoptionen ab:
1. Root-Passwort setzen: Unbedingt ein starkes Passwort vergeben 2. Anonyme Benutzer entfernen: Ja (empfohlen) 3. Root-Login nur lokal: Ja (empfohlen) 4. Test-Datenbank entfernen: Ja (empfohlen) 5. Rechte-Tabelle neu laden: Ja
Mit MySQL/MariaDB verbinden
Als Root-Benutzer
mysql -u root -pUnter neueren Ubuntu/Debian-Versionen mit MariaDB:
sudo mysqlMySQL-Prompt
Nach erfolgreicher Anmeldung sehen Sie:
MariaDB [(none)]>Beenden mit:
EXIT;Benutzer und Datenbanken anlegen
Datenbank erstellen
CREATE DATABASE meine_app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Benutzer erstellen
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'sicheres_passwort';Rechte vergeben
GRANT ALL PRIVILEGES ON meine_app.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;Alles in einem Schritt
CREATE DATABASE meine_app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'sicheres_passwort';
GRANT ALL PRIVILEGES ON meine_app.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;Wichtige SQL-Befehle
Datenbanken anzeigen
SHOW DATABASES;Benutzer anzeigen
SELECT user, host FROM mysql.user;Datenbank auswählen
USE meine_app;Tabellen anzeigen
SHOW TABLES;Benutzer-Rechte anzeigen
SHOW GRANTS FOR 'appuser'@'localhost';Backup erstellen
Einzelne Datenbank sichern
mysqldump -u root -p meine_app > meine_app_backup.sqlAlle Datenbanken sichern
mysqldump -u root -p --all-databases > alle_datenbanken.sqlBackup wiederherstellen
mysql -u root -p meine_app < meine_app_backup.sqlRemote-Zugriff einrichten
Warnung: Remote-Zugriff ist ein Sicherheitsrisiko. Nur aktivieren wenn wirklich nötig.
1. Konfiguration anpassen
Bearbeiten Sie /etc/mysql/mariadb.conf.d/50-server.cnf:
# bind-address = 127.0.0.1
bind-address = 0.0.0.02. Benutzer für Remote-Zugriff anlegen
CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'sicheres_passwort';
GRANT ALL PRIVILEGES ON meine_app.* TO 'remoteuser'@'%';
FLUSH PRIVILEGES;3. Firewall anpassen
ufw allow 3306/tcp4. Dienst neustarten
systemctl restart mariadbBesser: Statt Remote-Zugriff einen SSH-Tunnel nutzen:
ssh -L 3306:localhost:3306 user@serverPerformance-Tuning Basics
Die Datei /etc/mysql/mariadb.conf.d/50-server.cnf enthält wichtige Einstellungen:
[mysqld]
# InnoDB Buffer Pool - ca. 70% des verfügbaren RAMs
innodb_buffer_pool_size = 1G
# Größere Logdateien für mehr Performance
innodb_log_file_size = 256M
# Query Cache (MariaDB < 10.1)
query_cache_size = 64M
query_cache_type = 1Nach Änderungen:
systemctl restart mariadbHäufige Probleme
"Access denied for user 'root'@'localhost'"
Unter neueren Systemen nutzt root oft unix_socket-Authentifizierung:
sudo mysqlOder Passwort-Authentifizierung aktivieren:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'neues_passwort';
FLUSH PRIVILEGES;Datenbank-Dienst startet nicht
Logdateien prüfen:
journalctl -u mariadb
tail -100 /var/log/mysql/error.logFazit
MySQL/MariaDB ist schnell installiert, aber die Absicherung ist wichtig. Führen Sie immer mysql_secure_installation aus, verwenden Sie separate Benutzer für jede Anwendung mit minimalen Rechten, und richten Sie regelmäßige Backups ein.