Site x5

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)