Mariadb - Die Datenbank unter Linux

Server aller Arten
Benutzeravatar
robertgoedl
Administrator
Beiträge: 1317
Registriert: Sa 10. Jul 2021, 01:47
Wohnort: Graz
Has thanked: 150 times
Been thanked: 777 times
Kontaktdaten:

Mariadb - Die Datenbank unter Linux

Beitrag von robertgoedl »

Datenbanken dienen dazu, Daten zu sammeln, zu speichern, mit anderen Daten zu verbinden und diese bei Bedarf wieder zu liefern. Normalerweise werden Datenbanken in Verbindung mit einem Webserver und entsprechender Software - etwa einem CMS oder sonstiger Software eingesetzt.

Doch auch der normale Benutzer kann von Datenbanken profitieren - vor allem, wenn es um große Datenmengen geht. Nehmen wir einmal an, Sie haben sehr viele Bilder oder sehr viel Musikdateien. Normale Software kann bei großen Mengen dabei schon an ihre Grenzen stoßen - sie startet langsam, sie reagiert langsam. Meist nutzt Software eigene kleine Datenbanken - wie etwa SQLite - bis zu einer gewissen Menge an Daten kommt diese kleine Datenbank auch problemlos damit klar - irgendwann sollte man jedoch den Einsatz einer größeren, professionelleren Datenbank in Erwägung ziehen.

Unter Linux findet man immer wieder Anwendungen, die es ermöglichen, größere Datenbanken einzusetzen. In diesem Beitrag sehen wir uns als Beispiel die Software Digikam an. Dabei sehen wir nicht nur, wie man eine Software mit einer Datenbank verbindet - sondern auch, wie man eine Datenbank einrichtet.

In diesem Beispiel setzen wir die wohl bekannteste Datenbank unter Linux - MariaDB an. MariaDB ist die freie Version von MySQL von Oracle. Oracle - die Firma hinter MySQL wollten nicht wirklich mit freien Entwicklern zusammen arbeiten - die freien Entwickler setzten sich ab und brachten MariaDB auf die Welt.

MariaDB installieren und absichern

Unter auf Debian basierenden Linux-Distributionen installieren Sie diese Software wie üblich ganz einfach über die Paket-Verwaltung durch das Paket "mariadb-server", unter Void Linux etwa durch die Pakete "mariadb mariadb-client".

Unter Debian läuft die Datenbank nach der Installation automatisch - Sie können dies über Systemd als Administrator am Terminal prüfen:

Code: Alles auswählen

systemctl status mariadb.service

Unter Void Linux müssen wir den Dienst erst erlauben. Erst richten wir das Arbeitsverzeichnis ein:

Code: Alles auswählen

mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
Jetzt aktivieren wir den Dienst:

Code: Alles auswählen

ln -s /etc/sv/mysqld /var/service/mysqld
Hierbei wird einfach gesagt der SQL-Server mit dem Runit-Dienst (das Pendant zu Systemd unter Debian) verbunden. Man legt einen Symlink von "/etc/sv/mysqld/" in das Runit-Verzeichnis unter "/var/service/".

Jetzt startet man den Dienst:

Code: Alles auswählen

sv start mysqld

Nachdem die Datenbank läuft, sichern wir diese ab:

Code: Alles auswählen

mysql_secure_installation
MariaDB - Absicherung nach der Installation
MariaDB - Absicherung nach der Installation

Code: Alles auswählen

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
Bisher gibt es noch kein Passwort für den root-Benutzer der Datenbank, wir erstellen also einen - bestätigen Sie mit Eingabe ohne etwas einzugeben:
MariaDB - Absicherung nach der Installation
MariaDB - Absicherung nach der Installation

Code: Alles auswählen

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n]
Bestätigen Sie, um zum UNIX-Socket zu wechseln, mit Eingabe (dann wird unser root-Passwort genutzt):
MariaDB - Absicherung nach der Installation
MariaDB - Absicherung nach der Installation

Code: Alles auswählen

Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n]
Wir werden gefragt, ob wir jetzt das Passwort für den Datenbank-Administrator wechseln möchten - mein Tipp - !Nein!. Vor allem, wenn Sie einen eigenen root-Benutzer des Systems (nicht der Datenbank) haben - dies erledigen wir später - denn immer wieder vergessen Benutzer dieses Passwort kurz nach der Einrichtung. Geben Sie also "n" ein und bestätigen:

Code: Alles auswählen

 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]
Damit niemand ohne Rechte auf die Daten in der Datenbank zugreifen kann, bestätigen wir mit Eingabe:

Code: Alles auswählen

 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]
Hierbei kommt es darauf an - möchten Sie als Datenbank-Administrator über das Netzwerk die Datenbank verwalten oder nur vom Rechner aus, auf dem die Datenbank installiert ist. Sicherer ist es natürlich, nicht vom Netzwerk aus zugreifen zu können - also Eingabe.

Code: Alles auswählen

 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]
MariaDB hat eine Test-Datenbank installiert - in der Regel brauchen wir diese nicht, sie kann zum Lernen über die Arbeit mit der Datenbank dienen - brauchen wir nicht, also Eingabe.

Code: Alles auswählen

 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]
Wir bestätigen noch einmal die Einstellungen und haben damit die Einrichtung abgeschlossen.

Wir beschrieben - wir haben die abgesicherte Einrichtung der Datenbank abgeschlossen, jetzt können wir in die Datenbank wechseln und etwa ein Passwort für den Datenbank-Administrator erstellen. Dies ist optional - Sie können mit Ihrem root-Passwort in die Datenbank, alternativ eben mit "sudo". Um ein root-Passwort für die Datenbank zu erstellen:

Code: Alles auswählen

mariadb
Oder eben mit "sudo":

Code: Alles auswählen

sudo mariadb
MariaDB - Datenbank-Passwort erstellen
MariaDB - Datenbank-Passwort erstellen

Code: Alles auswählen

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.5.10-MariaDB-debug MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
Wir finden uns jetzt im Prompt der Datenbank wieder, nach "MariaDB [(none)]>" wartet die Datenbank auf Ihre Eingaben. Erstellen wir das root-Passwort der Datenbank - "PASSWORT" ersetzen Sie durch ein sicheres Passwort:

Code: Alles auswählen

GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'PASSWORT' WITH GRANT OPTION;
Wir übernehmen die Einstellungen:

Code: Alles auswählen

FLUSH PRIVILEGES;
Jetzt können wir uns wieder ausloggen:

Code: Alles auswählen

QUIT;

MariaDB nutzen

Wie oben schon beschrieben nutzen wir für dieses Beispiel Digikam - Digikam soll, die Datenbank nutzen können. Wir erstellen die dafür nötige Datenbank, den zugehörigen Benutzer und vergeben die Rechte. Grundsätzlich können Sie den Vorgang für jede andere Software übernehmen:

Zu Beginn loggen wir uns in die Datenbank ein - entweder als root:

Code: Alles auswählen

mariadb
sudo mariadb
Oder, Sie haben ein root-Passwort für die Datenbank erstellt:

Code: Alles auswählen

mysql -u root -p
sudo mysql -u root -p
MariaDB - Datenbank erstellen
MariaDB - Datenbank erstellen
Jetzt erstellen wir die Datenbank "digikam":

Code: Alles auswählen

CREATE DATABASE digikam;
MariaDB - Datenbank erstellen
MariaDB - Datenbank erstellen
Damit wäre die passende Datenbank erstellt - Sie können diese aber natürlich benennen, wie Sie möchten. Jetzt erstellen wir den Benutzer "digikam" und dessen Passwort - hier ersetzen Sie "PASSWORT" durch ein Passwort:

CREATE USER 'digikam'@'%' IDENTIFIED BY 'PASSWORT';
MariaDB - Benutzer für die Datenbank erstellen
MariaDB - Benutzer für die Datenbank erstellen
Jetzt übergeben wir alle Rechte an der Datenbank "digikam" an den Benutzer "digikam" - "PASSWORT" ersetzen Sie dabei wieder durch das erstellte Passwort für den Benutzer:

Code: Alles auswählen

GRANT ALL PRIVILEGES ON digikam.* TO 'digikam'@'%';
GRANT ALL ON *.* TO 'digikam'@'%' IDENTIFIED BY 'PASSWORT';
MariaDB - Rechte der Datenbank an den Benutzer übergeben
MariaDB - Rechte der Datenbank an den Benutzer übergeben
Jetzt übernehmen wir die Einstellungen:

Code: Alles auswählen

FLUSH PRIVILEGES;
Und nun loggen wir uns wieder aus:

Code: Alles auswählen

QUIT;

In Digikam öffnen wir jetzt die Einstellungen, hier finden wir auch die Einstellungen für die Datenbank - "Einstellungen → Digikam einrichten → Datenbank":
Software mit der Datenbank verbinden
Software mit der Datenbank verbinden
Hier geben Sie jetzt als Datenbank-Typ "MySQL-Server" an, den Rechnernamen setzen Sie auf "localhost" (andernfalls die IP-Adresse bei einem entfernten Rechner). Weiter geben Sie natürlich den Benutzer der Datenbank an und dessen Passwort - darunter folgt die angelegte Datenbank. Nach dem Übernehmen der Einstellungen kommt die jeweilige Software auch mit riesigen Datenmengen problemlos klar.
Windows lässt sich mit einem U-Boot vergleichen - mach ein Fenster auf und die Probleme beginnen ...

Create an account or sign in to join the discussion

You need to be a member in order to post a reply

Create an account

Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute

Registrieren

Sign in