MariaDB einrichten
Einleitung
Wir werden MariaDB auf einem Debian-Server installieren. Anschließend werden wir die Konfiguration anpassen, damit der Datenbankserver auf allen Netzwerkschnittstellen (Interface 0.0.0.0) erreichbar ist. Abschließend richten wir Nutzer, Rollen und Berechtigungen ein.
Installation
Zuerst aktualisieren wir die Paketquellen und Pakete auf dem Server:
apt update && apt upgrade -y
Der &&
(UND) Operator sorgt dafür,
dass apt upgrade
nur dann ausgeführt wird, wenn es bei apt update
keine Probleme gibt.
Mit -y
bestätigen wir im Voraus, dass wir upgraden möchten.
Dann installieren wir den MariaDB Server, dabei wird der MariaDB Client auch mit installiert
apt install mariadb-server -y
Das war auch schon alles, wir können mit systemctl
nachschauen, ob alles gut ist:
systemctl status mariadb
Netzwerkschnittstellen
Jetzt konfigurieren wir die Netzwerkschnittstellen, auf denen der MariaDB Server erreichbar ist.
Mit den Standard Einstellungen ist er nur via localhost zu erreichen.
Dies können wir mit dem Socket Statistics
Tool nachschauen:
sudo ss -tlnp4 # tcp listening numeric processes IPv4
Um das zu ändern, editieren wir die entsprechende Datei
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
und ändern diese Zeile
bind-address = 127.0.0.1
zu
bind-address = 0.0.0.0
Jetzt muss der Datenbank Server neu gestartet werden
sudo systemctl restart mariadb
Mit Socket Statistics
sollten wir jetzt sehen, dass MariaDB tatsächlich auf allen Interfaces (0.0.0.0
) lauscht.
User & Berechtigungen
Danach richten wir einen Benutzer ein. Tatsächlich werden wir 2 User anlegen. Dafür verwenden wir den MariaDB Clienten. Um uns als root User anzumelden, reicht folgender Befehl
sudo mariadb
Jetzt sind wir auf dem Datenbank Server angemeldet und können mir ihr interagieren.
Folgende SQL Statements legen zwei User auf dem Server an und statten sie via Rolle mit Berechtigungen aus.
Die Befehle werden Zeilenweise eingetippt und müssen mit einem Semikolon ; abgeschlossen werden.
Ersetzen Sie username
durch Ihren eigenen Benutzernamen.
// Dieser User darf sich von überall aus (remote) einloggen
CREATE USER username IDENTIFIED BY "passwort";
// Dieser User kann sich nur von localhost aus einloggen,
// braucht dafür kein Passwort
CREATE USER username@localhost IDENTIFIED VIA unix_socket;
CREATE ROLE admin;
// *.* bedeutet jede_datenbank.jede_tabelle_in_datenbank
GRANT ALL PRIVILEGES ON *.* TO admin;
GRANT admin TO username;
GRANT admin TO username@localhost;
SET DEFAULT ROLE admin FOR username;
SET DEFAULT ROLE admin FOR username@localhost;
FLUSH PRIVILEGES;
Wir sind fertig und können uns aus der Datenbank abmelden, dafür können wir
exit
oder die Tastenkombination Strg+d
verwenden.
Berechtigungen prüfen
Um zu überprüfen, ob alles geklappt hat, melden wir uns als normaler User (nicht root) wieder an und prüfen unsere Berechtigungen
mariadb # ja wirklich, das ist der Unix Socket login
Wenn wir jetzt SHOW GRANTS;
eintippen, sollten wir folgendes sehen
MariaDB [(none)]> SHOW GRANTS;
+---------------------------------------------------------------------+
| Grants for user@localhost |
+---------------------------------------------------------------------+
| GRANT `admin` TO `user`@`localhost` |
| GRANT USAGE ON *.* TO `user`@`localhost` IDENTIFIED VIA unix_socket |
| GRANT ALL PRIVILEGES ON *.* TO `admin` |
| SET DEFAULT ROLE `admin` FOR `user`@`localhost` |
+---------------------------------------------------------------------+
4 rows in set (0,000 sec)