Zum Inhalt springen
Verpassen Sie nicht unseren 20%-Rabatt für Neukunden! Rabattcode: KAVESNET20 Kopiert
MySQL

MySQL / MariaDB Datenbankverwaltung: Installation, Nutzer, Backups

MySQL/MariaDB auf Linux VDS installieren, Nutzer und Datenbanken anlegen, Dump/Import, Performance-Tuning und sicherer Fernzugriff.

KavesNET-Team 9. Oktober 2025 4 Min Lesedauer
MySQL MariaDB Verwaltung

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_connections erhö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

Schlagwörter MySQL MariaDB Datenbank Tutorial

Ähnliche Beiträge

Das könnte Sie auch interessieren.