MySQL und MariaDB Installation: Grundlegende Verwaltung
Schritt-für-Schritt MySQL und MariaDB Installation unter Linux, mysql_secure_installation, Datenbanken und Benutzer erstellen, SQL-Grundbefehle, Remote-Zugriff und Performance-Tuning.
Inhaltsverzeichnis
MySQL und MariaDB Installation: Grundlegende Verwaltung
MySQL und MariaDB sind die weltweit am häufigsten verwendeten relationalen Datenbankverwaltungssysteme. Die große Mehrheit der Webanwendungen, E-Commerce-Websites und Unternehmenssysteme verwendet eines dieser Datenbanksysteme. Dieser Leitfaden behandelt die Installation, grundlegende Konfiguration und Verwaltung beider Systeme.
MySQL vs MariaDB
MariaDB ist ein Community-Fork, der von den ursprünglichen MySQL-Entwicklern erstellt wurde. Wesentliche Unterschiede:
| Merkmal | MySQL | MariaDB |
|---|---|---|
| Lizenz | GPL + Kommerziell | GPL (vollständig offen) |
| Entwickler | Oracle | MariaDB Foundation |
| Performance | Gut | Generell schneller |
| Kompatibilität | Referenz | MySQL-kompatibel |
| Neue Features | Langsamer | Schnellerer Release-Zyklus |
MariaDB wird für neue Projekte empfohlen. Es ist vollständig MySQL-kompatibel und bietet generell bessere Performance. Die Migration von MySQL zu MariaDB ist unkompliziert.
MySQL Installation (Ubuntu/Debian)
Paketliste aktualisieren und installieren
# Paketliste aktualisieren
apt update
# MySQL Server installieren
apt install -y mysql-server
# Dienststatus prüfen
systemctl status mysql
# Autostart aktivieren
systemctl enable mysql
MySQL-Version überprüfen
mysql --version
# Ausgabe: mysql Ver 8.0.xx Distrib 8.0.xx, for Linux (x86_64)
MariaDB Installation (Ubuntu/Debian)
# Paketliste aktualisieren
apt update
# MariaDB Server installieren
apt install -y mariadb-server mariadb-client
# Dienststatus prüfen
systemctl status mariadb
# Autostart aktivieren
systemctl enable mariadb
# Version prüfen
mysql --version
MariaDB Installation (CentOS/AlmaLinux/Rocky Linux)
# MariaDB-Repository hinzufügen
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
# MariaDB installieren
dnf install -y MariaDB-server MariaDB-client
# Dienst starten und aktivieren
systemctl start mariadb
systemctl enable mariadb
Sicherheitskonfiguration: mysql_secure_installation
Führen Sie nach der Installation immer den Sicherheitsassistenten aus:
mysql_secure_installation
Der Assistent stellt folgende Fragen:
Enter current password for root (enter for none): [Enter]
Switch to unix_socket authentication [Y/n]: n
Change the root password? [Y/n]: Y
New password: [Starkes Passwort eingeben]
Re-enter new password: [Passwort wiederholen]
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Deaktivieren Sie den Remote-Root-Zugriff. Erstellen Sie separate Benutzer für Remote-Verbindungen. Verwenden Sie starke Passwörter (mindestens 12 Zeichen mit Groß-/Kleinbuchstaben, Zahlen und Sonderzeichen).
Verbindung zu MySQL/MariaDB
# Als Root verbinden
mysql -u root -p
# Mit bestimmter Datenbank verbinden
mysql -u benutzer -p datenbankname
# Mit Remote-Server verbinden
mysql -h 192.168.1.100 -u benutzer -p datenbankname
# Mit bestimmtem Port verbinden
mysql -h server -P 3306 -u benutzer -p
Datenbanken erstellen und verwalten
-- Datenbank erstellen
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Alle Datenbanken auflisten
SHOW DATABASES;
-- Datenbank auswählen
USE myapp;
-- Datenbank löschen (Vorsicht!)
DROP DATABASE alte_datenbank;
-- Datenbankgröße prüfen
SELECT table_schema AS 'Datenbank',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Größe (MB)'
FROM information_schema.tables
GROUP BY table_schema;
Benutzer erstellen und Berechtigungen vergeben
-- Benutzer erstellen (nur localhost)
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StarkesPW123!';
-- Benutzer erstellen (Remote-Zugriff)
CREATE USER 'appuser'@'%' IDENTIFIED BY 'StarkesPW123!';
-- Zugriff von bestimmter IP
CREATE USER 'appuser'@'192.168.1.50' IDENTIFIED BY 'StarkesPW123!';
-- Vollzugriff auf Datenbank gewähren
GRANT ALL PRIVILEGES ON myapp.* TO 'appuser'@'localhost';
-- Nur Lesezugriff gewähren
GRANT SELECT ON myapp.* TO 'readonly'@'localhost';
-- Berechtigungen auf bestimmte Tabelle
GRANT SELECT, INSERT, UPDATE ON myapp.users TO 'appuser'@'localhost';
-- Berechtigungen anwenden
FLUSH PRIVILEGES;
-- Benutzerberechtigungen anzeigen
SHOW GRANTS FOR 'appuser'@'localhost';
-- Benutzer löschen
DROP USER 'alter_benutzer'@'localhost';
Grundlegende SQL-Befehle
-- Tabelle erstellen
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Daten einfügen
INSERT INTO users (username, email) VALUES ('hans', 'hans@example.com');
-- Daten abfragen
SELECT * FROM users;
SELECT username, email FROM users WHERE id = 1;
-- Daten aktualisieren
UPDATE users SET email = 'neu@example.com' WHERE id = 1;
-- Daten löschen
DELETE FROM users WHERE id = 5;
-- Tabellen auflisten
SHOW TABLES;
-- Tabellenstruktur anzeigen
DESCRIBE users;
Remote-Zugriff konfigurieren
Standardmäßig akzeptiert MySQL/MariaDB nur Verbindungen von localhost. Für Remote-Zugriff:
1. Konfigurationsdatei bearbeiten
# Für MySQL
nano /etc/mysql/mysql.conf.d/mysqld.cnf
# Für MariaDB
nano /etc/mysql/mariadb.conf.d/50-server.cnf
# bind-address Zeile ändern oder auskommentieren
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
2. Dienst neu starten
systemctl restart mysql
# oder
systemctl restart mariadb
3. Firewall-Regel hinzufügen
# Mit UFW
ufw allow 3306/tcp
# Mit iptables
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
Den MySQL-Port (3306) ins Internet zu öffnen ist ein Sicherheitsrisiko. Verwenden Sie wenn möglich SSH-Tunneling oder VPN. Wenn Remote-Zugriff erforderlich ist, beschränken Sie ihn auf bestimmte IP-Adressen.
Performance-Optimierung
Grundlegende Konfigurationsoptimierung
nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# InnoDB Buffer Pool (70-80% des RAM)
innodb_buffer_pool_size = 1G
# Verbindungspool
max_connections = 150
# Temporäre Tabellengröße
tmp_table_size = 64M
max_heap_table_size = 64M
# Slow Query Log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
Konfiguration anwenden
systemctl restart mysql
# Variablen prüfen
mysql -u root -p -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"
Dienstverwaltung
# Dienst starten
systemctl start mysql
# Dienst stoppen
systemctl stop mysql
# Dienst neu starten
systemctl restart mysql
# Konfiguration neu laden
systemctl reload mysql
# Dienststatus prüfen
systemctl status mysql
# Logs anzeigen
journalctl -u mysql -f
tail -f /var/log/mysql/error.log
Fazit
MySQL und MariaDB sind leistungsstarke und zuverlässige Datenbanksysteme. Vernachlässigen Sie nach der Installation nicht die Sicherheitskonfiguration, führen Sie regelmäßige Backups durch und optimieren Sie die Performance-Einstellungen entsprechend den Ressourcen Ihres Servers. Beide Systeme laufen problemlos auf REXE-Servern.
Verwandte Artikel
PostgreSQL Installation und Grundlegende Verwaltung
PostgreSQL-Installation auf Ubuntu/Debian und RHEL/CentOS, Benutzer und Datenbanken erstellen, grundlegende SQL-Befehle, Remote-Verbindung konfigurieren und Backup-Strategien. Schritt-fur-Schritt-Anleitung.
Redis und Memcached Installation: Cache-Schicht Leitfaden
Redis und Memcached Installation auf Ubuntu/Debian, Grundbefehle, Persistenz-Einstellungen, TTL-Konfiguration, Redis vs Memcached Vergleich und Anwendungsintegration.
phpMyAdmin Installation und sicherer Zugriff
Schritt-fur-Schritt phpMyAdmin Installation auf Apache und Nginx, SSL-Konfiguration, Benutzerverwaltung, IP-Einschraenkungen und Sicherheitshaertung.