Zum Hauptinhalt springen
Zurück zur Kategorie

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.

Lesezeit: 14 min Datenbank
mysqlmariadbdatenbankinstallationsqlubuntudebianlinux
Autor
REXE Teknoloji Network & Security Team
Redaktion
REXE Teknoloji Technical Editorial
Erstveröffentlichung
Letzte Aktualisierung

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:

MerkmalMySQLMariaDB
LizenzGPL + KommerziellGPL (vollständig offen)
EntwicklerOracleMariaDB Foundation
PerformanceGutGenerell schneller
KompatibilitätReferenzMySQL-kompatibel
Neue FeaturesLangsamerSchnellerer 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

hljs bash
# 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

hljs bash
mysql --version
# Ausgabe: mysql  Ver 8.0.xx Distrib 8.0.xx, for Linux (x86_64)

MariaDB Installation (Ubuntu/Debian)

hljs bash
# 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)

hljs bash
# 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:

hljs bash
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

hljs bash
# 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

hljs sql
-- 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

hljs sql
-- 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

hljs sql
-- 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

hljs bash
# Für MySQL
nano /etc/mysql/mysql.conf.d/mysqld.cnf

# Für MariaDB
nano /etc/mysql/mariadb.conf.d/50-server.cnf
hljs ini
# bind-address Zeile ändern oder auskommentieren
# bind-address = 127.0.0.1
bind-address = 0.0.0.0

2. Dienst neu starten

hljs bash
systemctl restart mysql
# oder
systemctl restart mariadb

3. Firewall-Regel hinzufügen

hljs bash
# 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

hljs bash
nano /etc/mysql/mysql.conf.d/mysqld.cnf
hljs ini
[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

hljs bash
systemctl restart mysql

# Variablen prüfen
mysql -u root -p -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"

Dienstverwaltung

hljs bash
# 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.

Häufig gestellte Fragen

Was soll ich zwischen MySQL und MariaDB wählen?

MariaDB wird für neue Projekte empfohlen. Es ist vollständig MySQL-kompatibel, bietet generell bessere Performance und ist vollständig Open Source. Ihre bestehenden MySQL-Anwendungen laufen ohne Änderungen auf MariaDB. Wenn Sie jedoch Oracle-spezifische MySQL-Features benötigen (Group Replication, MySQL Shell), wählen Sie MySQL.

Ich habe das MySQL-Root-Passwort vergessen, wie setze ich es zurück?

Starten Sie MySQL im Safe-Modus: Führen Sie systemctl stop mysql aus, dann mysqld_safe --skip-grant-tables &. Verbinden Sie sich mit mysql -u root und führen Sie ALTER USER 'root'@'localhost' IDENTIFIED BY 'NeuesPasswort'; aus. Führen Sie abschließend FLUSH PRIVILEGES; aus und starten Sie den Dienst normal neu.

Ich kann keine Remote-Verbindung herstellen, was soll ich prüfen?

Prüfen Sie drei Dinge: 1) Stellen Sie sicher, dass bind-address auf 0.0.0.0 gesetzt ist, 2) Prüfen Sie, ob der Benutzer mit '%' oder der spezifischen IP erstellt wurde (SHOW GRANTS FOR 'user'@'%'), 3) Stellen Sie sicher, dass Port 3306 in der Firewall geöffnet ist (ufw status oder iptables -L).

Wie soll ich den innodb_buffer_pool_size-Wert einstellen?

Setzen Sie ihn auf 70-80% des gesamten RAM Ihres Servers. Zum Beispiel 2-3GB für 4GB RAM, 5-6GB für 8GB RAM. Wenn der Server ausschließlich für die Datenbank verwendet wird, können Sie bis zu 80% gehen. Vergessen Sie nicht, den Dienst nach Änderungen neu zu starten.

Können MySQL und MariaDB auf demselben Server laufen?

Technisch möglich, aber nicht empfohlen. Beide verwenden standardmäßig Port 3306 und es kommt zu Konflikten. Sie können einen auf einen anderen Port verschieben, aber das schafft Komplexität. Im Allgemeinen ist es besser, eines zu wählen und dabei zu bleiben.

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.

15 min
postgresqldatenbankinstallation

phpMyAdmin Installation und sicherer Zugriff

Schritt-fur-Schritt phpMyAdmin Installation auf Apache und Nginx, SSL-Konfiguration, Benutzerverwaltung, IP-Einschraenkungen und Sicherheitshaertung.

16 min
phpmyadminmysqlmariadb
NetzwerkverkehrEingehend GbpsAusgehend Gbps