MySQL und PhpMyAdmin unter Ubuntu 23.10 oder 22.04

logos mysql-wp, pma

Dieser Beitrag bietet eine Schritt-für-Schritt Anleitung für Installation und Einrichtung von MySQL und PhpMyAdmin sowie als Anwendungsbeispiel die Einrichtung von WordPress.

Eine SQL (Sequential Query Language) Datenbank ist Voraussetzung, um auf einem Server WordPress oder ein anderes Content Management System (CMS) einrichten zu können. WordPress verwendet die Datenbank zur Verwaltung und Organisation seiner Dateien, der erstellten Webseiten oder auch für die Benutzerverwaltung. Als Datenbank Management System werden meist MySQL oder MariaDB eingesetzt.

Wir setzen voraus, dass Sie bereis PHP, das Plugin php-mysql und Apache2 auf Ihrem Rechner installiert haben. Vgl:

Die für die Datenbank verwendeten Verzeichnisse finden Sie – wenn alles eingerichtet ist – unter /var/lib/mysql.

MySQL ist ein Tool, mit dem Sie all diese Ordner und Dateien verwalten können, einfacher und mit mehr Optionen als über die Werkzeuge des Dateisystems selbst.

Die „Bedienung“ der Datenbank kann entweder über ein Terminal oder über eine grafische Benutzeroberfläche z.B. PhpMyAdmin erfolgen. WordPress erledigt aber die meisten Aufgaben selbständig im Hintergrund.

MySQL installieren und testen

Öffnen Sie ein Terminal und geben Sie den nachstehenden Befehl ein:sudo apt install mysql-server

MySQL sollte automatisch starten, den Status testen Sie mit

sudo service mysql status

Informationen liefert, auch falls der Server nicht korrekt läuft:

sudo journalctl -u mysql

MySQL absichern

Die Standard-Einstellungen von MySQL sind nicht sicher, insbesondere wenn Sie den Datenbankserver in der Produktivumgebung einsetzen möchten.

Die MySQL-Installation bietet ein Sicherheitsskript, das die weniger sicheren Standardoptionen berücksichtigt. Um die Sicherheit zu erhöhen, führen Sie den folgenden Befehl aus:

sudo mysql_secure_installation

Das Skript fragt interaktiv verschiedene Konfigurationsmöglichkeiten ab. Für eine Lern- und Testumgebung ausschließlich auf dem eigenen Rechner benötigen Sie das nicht unbedingt. Dennoch ist es hilfreich, alle Optionen einmal gesehen zu haben.

Konfiguration

Änderungen müssen Sie normalerweise nicht vornehmen. Alle *.conf– Dateien sind bereits für den normalen Einsatz vorkonfiguriert.

Die Dateien für die Konfiguration finden Sie nach der Installation unter /etc/mysql.. Sie sind in Abschnitte gegliedert, der Bereich [mysql] betrifft die Grundeinstellungen. In der Datei /etc/mysql/mysql.conf.d/mysqld.cnf werden unter anderem die Netzwerkeinstellungen vorgenommen. Sie ist hier für den localhost gesetzt:

bind-address    = 127.0.0.1

Änderungen der Netzwerkkonfiguration erfordern einen Neustart:

sudo systemctl restart mysql

Änderungen der übrigen Konfiguration erfordern ein Neu-Einlesen der Konfiguration:

sudo systemctl reload mysql

Über das Terminal anmelden

Sie können sich nun über ein Terminal bei der Datenbank anmelden. Der MySQL-Benutzer root existiert bereits und benötigt für das Login kein Passwort. Sie müssen sich jedoch mit den root-Rechten ihres Linux-Rechners bei MySQL anmelden:

sudo mysql

Wäre für den MySQL-Benutzer root ein Passwort vergeben, würden Sie an dieser Stelle eine zweite Passwortabfrage erhalten.

Streng genommen ist mysql ein Kommando, mit dem Sie den mysql-Client starten. Das ist vergleichbar mit einer interaktiven Shell, wie man sie auch von anderen Programmiersprachen kennt (z.B. php). Nach der Eingabe von sudo mysql ändert sich der Prompt und alle dann eingegebenen Befehle werden von MySQL verarbeitet, bis Sie MySQL mit exit wieder verlassen.

Exkurs Login: Standardmäßig verwendet MySQL auth_socket für die Authentifizierung. Dabei handelt es sich um eine passwortlose Authentifizierung, die das auth_socket-Plugin verwendet, mit dem sich Benutzer mit ihren Anmeldedaten (des Computers, auf dem MySQL läuft) für das Benutzerkonto bei MySQL anmelden und authentifizieren können. Sie können diese Einstellung ändern und ein Passwort vergeben. Ab MySQL 8.0, ist das Standard-Plugin caching_sha2_password für die Verwendung eines Passworts und nicht mehr mysql_native_password verantwortlich.

Neuen Benutzer anlegen

Für die „normale“ Arbeit mit MySQL sollten Sie aus Sicherheitsgründen nicht den MySQL-Benutzer root verwenden. Legen Sie statt dessen einen neuen Benutzer, z.B. admin an, der sich mit einem Passwort anmeldet. Sie müssen dazu als root eingeloggt sein.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'geheim';

Und weisen Sie dem neuen admin die erforderlichen Rechte zu. Allgemein mit dem Befehl:

GRANT [privilege] ON [database].[table] TO 'username'@'host';

Für unser konkretes Beispiel, den neuen Benutzer admin :

GRANT ALL PRIVILEGES ON *.* TO admin@localhost WITH GRANT OPTION;FLUSH PRIVILEGES;

Hinweis: WITH GRANT OPTION („grant“ = gewähren, erteilen), der neuen Benutzer darf Rechte an andere vergeben.

Den neuen Benutzer benötigen wir später für die Anmeldung bei PhpMyAdmin über die Weboberfläche.

Die vorhandenen Benutzer anzeigen lassen:

SELECT user FROM mysql.user;

Melden Sie sich nun von MySQL ab mit

exit

und melden Sie sich als admin neu an:

mysql -u admin -p

Eine Test-Datenbank erstellen

Mit reinen Text-Anweisungen lassen sich alle Operationen, die eine Datenbank erfordert, vom Terminal aus erledigen. Für einen ersten Test erstellen Sie eine Datenbank mit dem Namen books:

CREATE DATABASE books;

Anschließend die Datenbank auswählen, um darin eine Tabelle zu erstellen:

USE DATABASE books;
CREATE TABLE book_title (
   PRIMARY KEY (ID),
   bookTitle varchar(256),
   bookDescript varchar(256),
);

Werte in die Tabelle einfügen:

INSERT INTO table_name (bookTitle, bookDescript)
VALUES (value1, value2, value3, ...);

Konkret für unser Beispiel:

INSERT INTO book_title
VALUES ('The C Programming Language', 'A computer programming book written by Brian Kernighan and Dennis Ritchie' );

Alle Datenbanken anzeigen lassen:

SHOW DATABASES;

Eine Datenbank löschen:

DROP DATABASE books;

Bequemer erledigen Sie die Aufgaben mit der grafischen Benutzeroberfläche PhpMyAdmin.


PhpMyAdmin

phpMyAdmin ist ein Programm zur Verwaltung des Datenbanksystems. Es bietet ein Webinterface (eine grafische Benutzeroberfläche) für MySQL, einschließlich eines Root-Benutzers mit vollen administrativen Rechten.

Installation

sudo apt install phpmyadmin -y

Der Installer startet eine grafische Oberfläche, wo zunächst der Server ausgewählt wird. Die Auswahl bestätigt man mit „Enter“, die Schaltfläche „OK“ erreicht man mit der Tab-Taste, nicht mit der Maus.

Je nach Betriebssystem kann aber auch nur eine Abfrage in Textform im Terminal erfolgen, in der Sie eine entsprechende Zahl eingeben und mit der return-Taste bestätigen.

In den nächsten Schritten bestätigen Sie die automatische Einrichtung der phpMyAdmin-Datenbank, wählen den Server aus und legen einen Benutzer nebst ein Passwort fest. Lässt man das Feld leer, generiert das System ein zufälliges Passwort.

Setup neu starten

Sie können das Setup später erneut starten, um Änderungen vorzunehmen:

sudo dpkg-reconfigure phpmyadmin

PhpMyAdmin im Browser öffnen

Nach der Installation öffnen Sie PhpMyAdmin in einem Browser über die Adresszeile:

http://localhost/phpmyadmin

Sie erhalten ein Anmeldefenster und können den oben erstellten Benutzer admin zur Anmeldung benutzen. Die Anmeldung verlangt zwingend ein Passwort, daher ist auch die Anmeldung mit root in der Standard-Einstellung nicht möglich, weil root kein Passwort hat.

Falls PhpMyAdmin nicht startet

Passen Sie die Konfigurationsdatei apache2.conf des Apache2-Servers an, indem Sie die entsprechende Konfigurationsdatei von phpmyadmineinfügen. Öffnen Sie dazu die Datei vom Terminal aus mit dem Editor Nano:

sudo nano /etc/apache2/apache2.conf

und fügen Sie die Zeile ein:

Include /etc/phpmyadmin/apache.conf

Die Anweisung „Include“ liest die angegebene Datei an der Stelle, an der sie vorgefunden wird.

Die Änderungen Speichern mit den Tasten strg + O, mit Enter bestätigen und den Editor mit strg + X verlassen.

Danach den Server neu starten:

sudo systemctl restart apache2

Verzeichnisse

Die in der Seitenleiste bereits vorhandenen Verzeichnisse enthalten Datenbanken für Metadaten, die MySQL und PhpMyAdmin (für die Sie bei der Installation Benutzer und Passwort eingerichtet haben) selbst verwenden. Sie sollten daher nicht gelöscht werden.

Ansicht und Theme

Wie in allen Browser-Fenstern vergrößert und verkleinert man die Ansicht bei gedrückter Strg-Taste mit dem Mausrad oder den Plus- und Minus – Tasten .

Auch ein dunkles Thema kann eingerichtet werden. Auf der Seite https://www.phpmyadmin.net/themes/ stehen mehrere Themen zur Auswahl. Für die aktuelle phpMyAdmin- Version 5.2 haben wir das Thema „BooDark-Orange“ gewählt.

https://files.phpmyadmin.net/themes/boodark-orange/1.1.0/boodark-orange-1.1.0.zip

Laden Sie die Datei herunter und entpacken Sie sie per Doppelklick.

Anschließend kopieren Sie den Ordner boodark-orange, der sich im Verzeichnis boodark-orang-1.1.0 befindet, in das Theme-Verzeichnis von PhpMyAdmin: /use/share/phpmyadmin/themes. Dazu sind root-Rechte erforderlich.

Öffnen Sie ein Terminal und wechseln Sie in das entpackte Verzeichnis:cd Downloads/boodark-orange-1.1.0

Nun kopieren Sie den Ordner boodark-orange in das Themen-Verzeichnis von PhpMyAdmin mit dem Befehl

sudo cp -R boodark-orange /use/share/phpmyadmin/themes

Damit das neue Theme geladen wird, müssen Sie sich bei PhpMyAdmin neu anmelden.

Im Menüpunkt „Anzeige Einstellungen, Theme“ können Sie das Thema aus einer Drop-Down-Liste wählen.


WordPress

Wir zeigen hier die Einrichtung von WordPress, stellvertretend für viele andere Content Management Systeme wie z.B. Joomla, Drupal, Typo3 oder z.B. Anwendungen wie NextCloud.

Laden Sie die aktuelle Version von WordPress von der Herstellerseite https://de.wordpress.org/download/ und entpacken Sie den Ordner per Doppelklick. Kopieren Sie dann den Ordner WordPress in das Verzeichnis des Apache2-Servers /var/www/html.

cd Downloads
sudo cp -R wordpress /var/www/html/

Hinweis: Das ist als „normaler“ Benutzer nur möglich, wenn Sie den aktuellen Benutzer (sich selbst) der Gruppe www-data (wie in der Anleitung zur Einrichtung von PHP beschrieben) hinzugefügt haben. Hier noch mal die Zusammenfassung:

sudo chown -R www-data:www-data /var/www/html
sudo adduser henriette www-data
sudo chmod -R 777 /var/www/html/

Rechte für WordPress

Der Webserver muss die Dateien im WordPress-Verzeichnis lesen und verändern dürfen, damit für WordPress bei der Installation eine Konfigurationsdatei angelegt werden kann, Updates durchgeführt und hochgeladene Dateien gespeichert werden können. Ändern Sie daher auch die Rechte für das neue Verzeichnis.

chown -R www-data:www-data wordpress
-Rrekursiv
www-data:www-datauser : group
wordpressVerzeichnis

Wer möchte, kann alles im Terminal erledigen:

WordPress-Datenbank in PhpMyAdmin

Starten Sie nun über die Adresszeile in einem Browser phpMyAdmin und melden Sie sich als admin an:

http://localhost/phpmyadmin

Legen Sie für WordPress eine neue Datenbank an:

  1. neue Datenbank mit dem Namen: wordpress
  2. Kollation: utf8mb4_unicode_ci

Wählen Sie dann die neue Datenbank in der Seitenleist aus, legen Sie für diese Datenbank einen neuen Benutzer an, vergeben Sie ein Passwort und legen Sie die Rechte fest. Die Namen von Datenbank und Benutzer sind frei wählbar.

  1. Benutzerkonto: wordpress oder wpuser
  2. Passwort: geheim
  3. Globale Rechte: Alle auswählen

In der oberen Leiste des Hauptbereichs wird immer angezeigt, welche Datenbank Sie gerade bearbeiten.

Im unteren Bereich des Bildschirms finden Sie die Optionen für die Rechte, ganz unten rechts die Schaltfläche OK um ihre Einstellungen zu speichern.

Wenn Sie jetzt die Datenbank wordpress aus der Seitenleiste auswählen sehen Sie: – noch nichts. Die Datenbank ist noch leer und wird bei der Installation von WordPress selbständig befüllt.

WordPress installieren

In einem weiteren Browser-Tab starten Sie die legendäre WordPress-Installation, geben Sie in die Adresszeile ein:localhost/wordpress

Und Sie erhalten das WordPress Startfenster, los geht’s.

Erstellen Sie zum Test einen neuen Beitrag. In unserem Beispiel hat er die Überschrift „PHP lernen lohnt sich“. Nach dem Veröffentlichen finden Sie den neuen Beitrag über PhpMyAdmin in der Datenbank wordpress und der Tabelle wp_posts. Auch alle anderen von WordPress angelegten Tabellen sind jetzt hier zu sehen.

Häufige Fehler

WordPress Installation: Fehlende Schreibrechte

Passen Sie die Rechte für den Apache2-Server auf das wordpress– Verzeichnis an und starten Sie die Installation neu.

sudo chown www-data:www-data /var/www/html/wordpress

Alternativ können Sie die Datei wp-config.phpmit dem in der Meldung angezeigten Inhalt selbst erstellen. Öffnen Sie den Editor Nano über ein Terminal:

sudo nano wp-config.php

und kopieren Sie den Inhalt aus dem Installationsfenster hinein:

Sie speichern mit Strg + O und verlassen den Editor mit Strg + X.

WordPress Login:

Sie sind sich absolut sicher das richtige Passwort bei der ersten Anmeldung nach der Installation eingegeben zu haben und dennoch klappt es nicht. Dann ändern Sie das Benutzer-Passwort über PhpMyAdmin. Öffnen Sie die Tabelle wordpress > wp_user und bearbeiten Sie den Eintrag des Benutzers, in unserem Beispiel von oben henriette. In der Zeile, die mit user_pass beginnt, wählen Sie aus dem Pull-down-Menü den Eintrag MD5 und setzen Sie im Textfeld daneben ein neues Passwort. Scrollen Sie ganz zum Seitenende und bestätigen die Änderung mit OK. In der anschließenden Übersicht sehen Sie das Passwort dann nur noch als MD5 Hashwert. Mit dem neuen Passwort sollte das Einloggen bei WordPress jetzt möglich sein.

Kollation:

Sollten Sie sich bei der Auswahl der Kollation vertan haben, merken Sie dies oftmals bereits bei Erstellen eines Beitrages, weil fast alle Wörter als Schreibfehler mit einem roten Unterstrich markiert sind. Die Kollation lässt sich nachträglich ändern über Optionen > Kollation. Richtiger Wert ist: utf8mb4_unicode_ci.

Ausblick

Alle Komponenten für die Webentwicklung mit PHP unter Linux, Apache, MySQL PHP werden auch als LAMP-Stack bezeichnet, Natürlich können Sie alle diese Komponenten auch zusammen mit Hilfe der Software XAMPP installieren. Das geht wesentlich schneller und funktioniert auch recht gut. Ziel ist es jedoch, das Zusammenspiel der Komponenten kennen zu lernen und mit deren Einrichtung vertraut zu werden.


MySQL Dokumentation
phoenixnap.com
Wiki Ubuntuusers – MySQL
Michael Kofler: „Linux“, Rheinwerk Verlag, Bonn 2023