MySQL/MariaDB installieren
MySQL ist ein weit verbreitetes relationales Datenbankmanagementsystem (RDBMS). MariaDB entstand als Abspaltung von MySQL. Heutzutage unterscheiden sich die beiden Produkte etwas. Die Migration von Daten von einem System zum anderen kann daher eine komplexe Aufgabe sein.
MariaDB ist vollständig unter der GPLv2-Lizenz lizenziert, während MySQL zwei Lizenzoptionen bietet: GPLv2 (für die Community Edition) und Enterprise.
In den Fedora-Paketquellen finden Sie:
-
MariaDB 10.3 (als reguläres Paket oder als Modul)
-
MariaDB 10.4 (als Modul)
-
MySQL 8.0 Community-Edition (als reguläres Paket oder als Modul)
| Die Pakete von MariaDB und MySQL sind inkompatibel, da sie ähnliche Dateien bereitstellen. Daher können Sie nur eines der beiden installieren, entweder MariaDB oder MySQL, aber nicht beide. |
Darüber hinaus können Sie auch die MySQL Community Edition (8.0 oder 5.7) aus der von Oracle/MySQL selbst verwalteten Paketquelle installieren.
Von Oracle MySQL installieren
|
Diese Seite behandelt Softwarequellen von Drittanbietern, die nicht offiziell mit dem Fedora-Projekt verbunden sind oder von diesem unterstützt werden. Die Nutzung erfolgt auf eigene Verantwortung. Fedora empfiehlt die Verwendung freier und quelloffener Software und rät von patentgeschützter Software ab. |
Die MySQL-Paketquelle zu Fedora hinzufügen
Bitte laden Sie das von Oracle bereitgestellte Release-Paket von folgender Adresse herunter: https://dev.mysql.com/downloads/repo/yum/ Nach dem Herunterladen installieren Sie es bitte mit dnf:
sudo dnf install <Pfad_zum_heruntergeladenen_rpm>
Bitte beachten Sie, dass diese Paketquelle von Oracle bereitgestellt wird. Daher müssen alle auftretenden Probleme/Fehler über die Kommunikationskanäle von Oracle gemeldet werden: https://www.mysql.com/about/faq/
MySQL-Dienst starten und beim Anmelden aktivieren:
sudo systemctl start mysqld sudo systemctl enable mysqld
Standardpasswort finden: Aus Sicherheitsgründen generiert MySQL einen temporären Root-Schlüssel. Bitte beachten Sie, dass MySQL noch strengere Sicherheitsrichtlinien als MariaDB hat.
sudo grep 'temporary password' /var/log/mysqld.log
Installation aus der „main“-Paketquelle in Fedora
Die Community stellt ein MySQL-Paket in der main-Paketquelle bereit.
sudo dnf install {community-mysql-server|mariadb-server}
MySQL/MariaDB konfigurieren
Aktivieren Sie den Dienst beim Systemstart und starten Sie ihn:
sudo systemctl enable {mysqld|mariadb}
sudo systemctl start {mysqld|mariadb}
Installation aus Podman
Eine MySQL-Serverinstanz starten
Die folgenden Befehle enthalten das zufällig generierte Passwort für den Root-Benutzer;
podman logs mysql 2>&1 | grep GENERATED
podman run -d --name=mysql -e MYSQL_ROOT_PASSWORD=mypassword mysql/mysql-server
Eine MariaDB-Serverinstanz starten
podman run -d --name=mariadb -ed MYSQL_ROOT_PASSWORD=mypassword mariadb/server
| Standardmäßig leeres Passwort für MariaDB |
Die Option -d, die für BOTH im obigen podman run-Befehl verwendet wird, bewirkt, dass der Container im Hintergrund ausgeführt wird. Verwenden Sie diesen Befehl, um die Ausgabe des Containers zu überwachen:
|
Verbindung zum MySQL-Server aus dem Container heraus herstellen
podman exec -it mysql mysql -uroot -p
Sie müssen das Server-Root-Passwort zurücksetzen, indem Sie folgende Anweisung ausführen:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
RDBMS verwenden
Stellen Sie mit dem Befehl mysql eine Verbindung zur MySQL/MariaDB-Shell her.
Für beide lautet der Befehl mysql. Syntax und Optionen sind im Allgemeinen gleich.
$ mysql -u root -p
Sobald Sie Zugriff auf die Shell erhalten haben, können Sie die laufende Version der Software ermitteln:
mysql> SELECT version();
Sie können eine Datenbank erstellen:
mysql> create schema test;
Einen Benutzer anlegen:
mysql> GRANT ALL PRIVILEGES ON test.* TO 'my_user'@'localhost' IDENTIFIED BY 'PaSsWoRd';
Die verfügbaren Datenbanken auflisten:
mysql> show schemas;
Fernzugriff auf MySQL/MariaDB/MYSQL-Community ermöglichen
Neue Regel zu Firewalld hinzufügen
Öffnen Sie den SQL-Port (3306) auf FireWalld:
sudo firewall-cmd --permanent --zone=public --add-service=mysql
Konfigurationsdateien bearbeiten:
Konfigurationsdateien:
-
MySQL →
/etc/my.cnf/ -
MySQL Community →
/etc/my.cnf.d/community-mysql-server.cnf -
MariaDB →
/etc/my.conf
Sie können dies mit dem folgenden Befehl sicherstellen: rpm -qc [Paket].
|
- Navigieren Sie zu der Zeile, die mit der Direktive „bind-address“ beginnt. Sie sieht folgendermaßen aus: Sie können diese Direktive auf eine Platzhalter-IP-Adresse setzen, entweder auf *,
-
oder 0.0.0.0:
bind-address = 0.0.0.0
Nachdem Sie diese Zeile geändert haben, speichern und schließen Sie die Datei und starten Sie anschließend den MySQL-Dienst neu:
sudo systemctl restart {mysqld|mariadb}
Einen Benutzer anlegen
CREATE USER 'Ihr_Benutzername'@'Host_IP_Adresse' IDENTIFIED BY 'Ihr_Passwort';
| Ersetzen Sie „Ihr_Benutzername“ und „Ihr_Passwort“ durch Ihre gewünschten Zugangsdaten. Hierbei ist „Host_IP_Adresse“ der Hostname oder die IP-Adresse des Computers, von dem aus Sie sich mit dem MySQL-/MariaDB-Server verbinden möchten. Sie können auch „%“ anstelle von „Host_IP_Adresse“ verwenden, wenn Sie von jedem beliebigen Computer aus eine Verbindung herstellen möchten. Beispielsweise kann die Adresse „192.168.2.%“ lauten, wenn Sie von Computern aus dem IP-Bereich 192.168.2.1 bis 192.168.2.254 eine Verbindung herstellen möchten. |
Zugriff gewähren
GRANT ALL PRIVILEGES ON *.* TO 'Ihr_Benutzername'@'%'; IDENTIFIED BY 'mein-neues-Passwort' WITH GRANT OPTION;
ODER
Es ist üblich, dass Benutzer einen "Root"-Benutzer erstellen möchten, der sich von überall aus verbinden kann. Als Beispiel werden wir genau das tun, aber um es zu verbessern, werden wir einen Root-Benutzer erstellen, der sich von überall im lokalen Netzwerk (LAN) aus verbinden kann.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY 'mein-neues-Passwort' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Wie man Probleme in SQL behebt
Version:
dnf list installed | grep -i -e maria -e mysql -e galera
Überprüfen Sie die Parameter in der Konfigurationsdatei:
-
MySQL:
mysqld --print-defaults
-
MariaDB/MySQL Community:
/usr/libexec/mysqld --print-defaults
| Kompatibilität zwischen verschiedenen Versionen ist nicht zulässig. Installieren Sie einfach eine davon. |
Zugriff auf die SQL-Fehlerprotokolle
Oftmals liegt die Ursache für Verlangsamungen, Abstürze oder anderes unerwartetes Verhalten in SQL in der Verwendung von Befehlszeilenwerkzeugen. In vielen Fällen lassen sich die Fehlerprotokolle am einfachsten mit dem Befehlszeilenwerkzeug less auslesen.
Falls SQL sich nicht wie erwartet verhält, können Sie weitere Informationen über die Ursache erhalten.
-
Der Befehl systemctl status mysqld.service startet nicht korrekt. Diese Information erklärt nicht, was genau passiert. Nach diesem Befehl sollten Sie
journalctl -xe -u mariadb -u mysqldeingeben. -
Schauen Sie in die Protokolldateien, die sich bei MySQL unter
/var/log/mysql/mysqld.logund bei MariaDB unter/var/log/mariabdbefinden.
Wie man Socket-Fehler in SQL behebt
SQL verwaltet Verbindungen zum Datenbankserver mithilfe einer Socket-Datei, einer speziellen Datei, die die Kommunikation zwischen verschiedenen Prozessen ermöglicht. Die Socket-Datei des MySQL-Servers heißt mysqld.sock und befindet sich auf Ubuntu-Systemen üblicherweise im Verzeichnis /var/run/mysqld/. Diese Datei wird automatisch vom MySQL-Dienst erstellt.
Manchmal können Änderungen an Ihrem System oder Ihrer SQL-Konfiguration dazu führen, dass SQL die Socket-Datei nicht lesen kann und Sie somit keinen Zugriff auf Ihre Datenbanken erhalten. Der häufigste Socket-Fehler sieht folgendermaßen aus:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Es gibt mehrere Gründe für diesen Fehler und verschiedene Lösungsansätze. Eine häufige Ursache ist, dass der SQL-Dienst beendet ist oder gar nicht erst gestartet wurde, wodurch die Socket-Datei nicht erstellt werden konnte. Um herauszufinden, ob dies die Ursache ist, starten Sie den Dienst mit systemctl:
sudo systemctl start {mysqld|mariadb}
Versuchen Sie anschließend erneut, auf die MySQL-Eingabeaufforderung zuzugreifen. Sollten Sie weiterhin den Socket-Fehler erhalten, überprüfen Sie bitte den Speicherort, an dem Ihre MySQL-Installation nach der Socket-Datei sucht. Diese Information finden Sie in der Datei mysqld.cnf:
Suchen Sie im [mysqld]-Abschnitt dieser Datei nach dem Socket-Parameter. Er sieht folgendermaßen aus:
[mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306
Schließen Sie diese Datei und stellen Sie anschließend sicher, dass die Datei mysqld.sock existiert, indem Sie den Befehl „ls“ in dem Verzeichnis ausführen, in dem SQL sie erwartet:
ls -a /var/run/mysqld/
Falls die Socket-Datei existiert, wird sie in der Ausgabe dieses Befehls angezeigt:
mysqld.pid mysqld.sock mysqld.sock.lock
Wenn die Datei nicht existiert, liegt das möglicherweise daran, dass MySQL versucht, sie zu erstellen, aber nicht über die erforderlichen Berechtigungen verfügt. Sie können die korrekten Berechtigungen sicherstellen, indem Sie den Besitz des Verzeichnisses auf den Benutzer und die Gruppe „mysql“ ändern:
sudo chown mysql:mysql /var/run/mysqld/
Stellen Sie anschließend sicher, dass der mysql-Benutzer über die entsprechenden Berechtigungen für das Verzeichnis verfügt. In den meisten Fällen funktioniert die Einstellung auf 775:
sudo chmod -R 755 /var/run/mysqld/
Starten Sie abschließend den MySQL-Dienst neu, damit er erneut versuchen kann, die Socket-Datei zu erstellen:
sudo systemctl restart {mysqld|mariadb}
Versuchen Sie anschließend erneut, auf die MySQL-Eingabeaufforderung zuzugreifen. Sollte der Socket-Fehler weiterhin auftreten, liegt wahrscheinlich ein tieferliegendes Problem mit Ihrer MySQL-Instanz vor. In diesem Fall sollten Sie das Fehlerprotokoll überprüfen, um mögliche Hinweise zu finden.
Want to help? Learn how to contribute to Fedora Docs ›