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

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:

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.