MySQL / MariaDB Datenbankverwaltung: Installation, Nutzer, Backups
MySQL/MariaDB auf Linux VDS installieren, Nutzer und Datenbanken anlegen, Dump/Import, Performance-Tuning und sicherer Fernzugriff.
WordPress, E-Commerce, Enterprise-Apps — alle laufen über eine Datenbank. MySQL und sein Fork MariaDB sind die weltweit meistgenutzten relationalen Datenbanken. Diese Anleitung deckt Installation, Nutzer-/DB-Verwaltung, Backups und häufige Performance-Probleme auf einem Linux-VDS ab.
MySQL vs MariaDB — welches?
- MySQL: gehört Oracle, kommerziell + Community
- MariaDB: Open-Source-Fork von MySQL, ~95% kompatibel, in einigen Bereichen schneller
Für die meisten Projekte austauschbar — was installiert ist, reicht. WordPress unterstützt beides. Für Neuinstallation empfehlen wir MariaDB.
1. Installation
# Ubuntu/Debian
sudo apt update
sudo apt install mariadb-server -y
# AlmaLinux/RHEL
sudo dnf install mariadb-server -y
sudo systemctl enable --now mariadb
Status:
sudo systemctl status mariadb
2. Sicherheit (immer erster Schritt)
sudo mysql_secure_installation
- Set root password: starkes
- Remove anonymous users: Yes
- Disallow root login remotely: Yes
- Remove test database: Yes
- Reload privilege tables: Yes
3. Verbinden
sudo mysql -u root -p
Beenden: EXIT; oder Ctrl+D
4. Datenbank erstellen
CREATE DATABASE blog_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SHOW DATABASES;
utf8mb4 unterstützt Emoji + Nicht-Latin-Zeichen. Altes utf8 ist 3-Byte und bricht bei Emoji.
5. Nutzer + Rechte
CREATE USER 'blog_user'@'localhost' IDENTIFIED BY 'STARKES_PASSWORT';
GRANT ALL PRIVILEGES ON blog_db.* TO 'blog_user'@'localhost';
GRANT SELECT ON blog_db.* TO 'reader'@'localhost';
CREATE USER 'app_user'@'192.168.1.50' IDENTIFIED BY 'PASSWORT';
GRANT ALL ON app_db.* TO 'app_user'@'192.168.1.50';
FLUSH PRIVILEGES;
@'localhost' nur lokal, @'%' von überall (unsicher — nur mit spezifischer IP).
6. Rechte anzeigen / entziehen
SHOW GRANTS FOR 'blog_user'@'localhost';
REVOKE INSERT, UPDATE ON blog_db.* FROM 'blog_user'@'localhost';
DROP USER 'alt_user'@'localhost';
7. Backup (mysqldump)
Einzelne DB
mysqldump -u root -p blog_db > blog_db.sql
Komprimiert:
mysqldump -u root -p blog_db | gzip > blog_db_$(date +%Y%m%d).sql.gz
Alle DBs
mysqldump -u root -p --all-databases | gzip > all_dbs.sql.gz
Produktion: Lock-frei
mysqldump -u root -p --single-transaction --routines --triggers blog_db > blog_db.sql
--single-transaction für konsistentes Backup ohne Lock (InnoDB-Tabellen).
Cron-Automatisierung:
0 3 * * * mysqldump -u root -p'PASSWORT' blog_db | gzip > /backup/blog_$(date +\%Y\%m\%d).sql.gz
Cron-Beitrag, 3-2-1-Backup-Beitrag.
8. Restore
mysql -u root -p blog_db < blog_db.sql
zcat blog_db.sql.gz | mysql -u root -p blog_db
DB existiert nicht → erst CREATE.
9. Fernzugriff
Default: nur localhost. Für Remote:
/etc/mysql/mariadb.conf.d/50-server.cnf:
bind-address = 0.0.0.0
sudo systemctl restart mariadb
CREATE USER 'remote_user'@'YOUR_IP' IDENTIFIED BY 'STARKES_PASSWORT';
GRANT ALL ON db_name.* TO 'remote_user'@'YOUR_IP';
FLUSH PRIVILEGES;
In UFW 3306 nur für spezifische IP öffnen:
sudo ufw allow from YOUR_IP to any port 3306
⚠️ Niemals bind-address = 0.0.0.0 + GRANT % + UFW offen — öffentliches MySQL = Brute-Force-Ziel.
10. Performance-Tuning
/etc/mysql/mariadb.conf.d/50-server.cnf:
[mysqld]
innodb_buffer_pool_size = 2G
query_cache_size = 64M
query_cache_type = 1
max_connections = 200
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 3
sudo systemctl restart mariadb
11. Nützliche Befehle
SELECT table_schema "Database",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) "Size (MB)"
FROM information_schema.tables GROUP BY table_schema;
SHOW PROCESSLIST;
SELECT * FROM mysql.slow_log ORDER BY query_time DESC LIMIT 10;
REPAIR TABLE tabellen_name;
OPTIMIZE TABLE tabellen_name;
12. phpMyAdmin (GUI)
sudo apt install phpmyadmin -y
Apache-Config oder manuell /etc/apache2/conf-available/phpmyadmin.conf. Browser http://vds-ip/phpmyadmin.
⚠️ In Produktion phpMyAdmin nicht öffentlich — IP per .htaccess einschränken oder Cloudflare Access.
Häufige Fehler
- “Access denied for user”: falsches Passwort oder User
@'host'passt nicht - “Too many connections”:
max_connectionserhöhen, idle Connections killen - “Disk full”: Logs zu groß →
/var/log/mysql/aufräumen - “InnoDB: Operating system error number 28”: Festplatte voll → Linux Disk-Erweiterung
- “Can’t connect to MySQL server”: Dienst aus →
sudo systemctl status mariadb - Langsame Queries: Slow-Log,
EXPLAIN SELECT ..., INDEX setzen
Fazit
MySQL/MariaDB ist Kern-Infrastruktur — egal ob WordPress oder eigene Software. Installation in 5 Minuten; produktionsreif mit regelmäßigen Backups + Sicherheit + Tuning.
KavesNET VDS mit NVMe-SSD ist ideal für MySQL — Disk-I/O ist die Lebensader von DBs.
Verwandt: WordPress manuell installieren · Server-Backups
Ähnliche Beiträge
Das könnte Sie auch interessieren.
Was ist NVMe SSD? Der Einfluss auf die Serverleistung (vs. SATA SSD)
Was ist NVMe und wie unterscheidet es sich von SATA SSD? IOPS, Latenz und Praxiszahlen zeigen, warum NVMe heute der Server-Standard ist.
Weiterlesen
Was ist ein Dedicated Server? Wer braucht wirklich einen?
Was ist ein Dedicated Server, wie unterscheidet er sich vom VDS, wann ist er Pflicht? Vorteile, Kosten und die Colocation-Alternative — alles in diesem Ratgeber.
Weiterlesen
VDS mieten: 10 Kriterien, die Sie vor der Bestellung prüfen sollten
Vom CPU-Modell über den Disk-Typ bis zu DDoS-Schutz und Backups — die 10 Kriterien vor der VDS-Miete, einzeln erklärt. Wählen Sie nicht das falsche Paket.
Weiterlesen