Wenn du den MySQL-Datenbankdienst installierst, legt er automatisch ein Root-Konto an. Damit kannst du jede Aktion durchführen und auf alle Daten zugreifen. Das kann ein Sicherheitsalptraum sein!
Um deine Webseite sicher zu halten, ist es ratsam, zusätzliche Konten einzurichten, die nicht über diese erhöhten Rechte verfügen. Zum Glück gibt es mehrere Möglichkeiten, neue Benutzer in MySQL anzulegen.
In diesem Beitrag gehen wir auf alle Gründe ein, warum du deiner MySQL-Datenbank weitere Benutzer hinzufügen möchtest. Dann zeigen wir dir, wie du diese Konten erstellst und ihre Berechtigungen verwaltest, um maximale Sicherheit zu gewährleisten. Los geht’s!
Eine Einleitung zu MySQL (und warum du vielleicht neue Benutzer hinzufügen möchtest)
Die offizielle WordPress-Distribution unterstützt sowohl die MySQL- als auch die MariaDB-Datenbank-Engine. Wenn du die Vor- und Nachteile abgewogen hast, hast du dich vielleicht für die neueste Version der Datenbankverwaltungssoftware MySQL entschieden. Irgendwann möchtest du vielleicht zusätzliche Benutzer anlegen.
In MySQL besteht jedes Konto aus einem Benutzernamen und einem Passwort. Außerdem gibt es den oder die Hosts an, über die sich der Benutzer mit deinem MySQL-Server verbinden kann.
Normalerweise legst du zusätzliche Konten an, wenn mehrere Personen Zugriff auf deine Datenbank benötigen. Zwar können mehrere Personen über dasselbe Konto auf MySQL zugreifen, aber die gemeinsame Nutzung von Anmeldedaten stellt ein Sicherheitsrisiko dar. Wenn du Fehler oder verdächtige Aktivitäten in deiner Datenbank entdeckst, macht es ein gemeinsames Konto auch schwieriger, den Schuldigen zu identifizieren.
MySQL ist ein erlaubnisbasiertes System. Es ermöglicht dir, genau zu kontrollieren, auf welche Informationen jeder Benutzer Zugriff hat und welche Aktionen er durchführen kann. Die Einrichtung mehrerer Konten mit unterschiedlichen Berechtigungen ist viel sicherer als ein einziges Konto mit globalem Zugriff.
Wenn du MySQL installierst, erstellt es automatisch ein einziges Superuser-Konto ‚root’@’localhost‘. Auch wenn du die Datenbank allein verwaltest, ist es ratsam, mindestens ein weiteres Konto einzurichten. So stellst du sicher, dass du nicht den Zugriff auf deine gesamte Datenbank verlierst, nur weil du ein Problem mit ‚root’@’localhost‘ hast.
Dieses Root-Konto hat außerdem die Berechtigung, auf alle deine Daten zuzugreifen und alle Aktionen durchzuführen. Selbst erfahrene Datenbankbenutzer können mit dieser Kontrollebene ernsthaften Schaden anrichten. Aus diesem Grund solltest du ein normales Benutzerkonto anlegen, das du für die tägliche MySQL-Verwaltung nutzen kannst. Dann kannst du ‚root’@’localhost‘ für Aufgaben reservieren, die erweiterte Rechte erfordern.
Wie du deine MySQL-Datenbank verwaltest
Wenn es darum geht, deine MySQL-Datenbank zu verwalten, hast du zwei Möglichkeiten. Du kannst die MySQL Shell verwenden, die eine Python-, Javascript- oder SQL-Schnittstelle und eine Komponente des MySQL-Servers ist. Dieses Tool ist für Microsoft Windows, Linux und macOS für 64-Bit-Plattformen verfügbar.
Alternativ kannst du auch das kostenlose Tool phpMyAdmin verwenden. Schauen wir uns diese beiden Optionen einmal genauer an.
1. Verwalte deine Datenbank über die MySQL-Shell
Um die MySQL-Shell-Aufforderung aufzurufen, öffne ein Terminal oder eine Eingabeaufforderung. Dann kannst du den folgenden Befehl ausführen:
> mysqlsh
Dadurch wird die MySQL Shell geöffnet, ohne dass eine Verbindung zu einem Server hergestellt wird. Standardmäßig wird die MySQL-Shell im JavaScript-Modus gestartet, aber du kannst mit den Befehlen sql, py oder js den Modus wechseln:
In MySQL Shell werden Verbindungen zu MySQL Server-Instanzen über ein Session-Objekt abgewickelt. Wenn das X-Protokoll verfügbar ist, kannst du ein Session-Objekt verwenden. Beachte, dass für das X-Protokoll das X-Plugin erforderlich ist.
Das X Plugin lauscht auf dem Port, der in mysqlx_port angegeben ist, der standardmäßig 33060 lautet. Du kannst ein Session-Objekt mit folgendem Befehl erstellen:
–mysqlx (–mx)
Du kannst zum Beispiel eine X-Protokoll-Verbindung zu einer lokalen MySQL-Server-Instanz herstellen, die auf Port 33060 lauscht, indem du Folgendes tust
shell> mysqlsh –mysqlx -u user -h localhost -P 33060
Wenn das X-Protokoll nicht verfügbar ist, kannst du ein ClassicSession-Objekt verwenden. Dieses Objekt ist dafür gedacht, SQL gegen Server auszuführen, die das klassische MySQL-Protokoll verwenden. Um ein ClassicSession-Objekt zu erstellen, gibst du ein:
–mysql (–mc)
Du kannst die Ergebnisse deines Verbindungsversuchs mit dem Befehl status der MySQL Shell oder der Methode shell.status() überprüfen. Zum Beispiel:
mysql-js []> shell.status()
Um über die MySQL-Shell Berechtigungen zu vergeben, musst du deine Befehle als root-Benutzer ausführen. Dazu gibst du Folgendes ein und gibst bei der Aufforderung dein Passwort als MySQL-Root-Benutzer an:
mysql -u root -p
Das -u zeigt an, dass es sich bei dem folgenden Parameter um einen Benutzernamen handelt, der in diesem Fall root ist. Anstatt das Passwort im Klartext anzuzeigen, verwenden wir -p. Das bedeutet, dass das Passwort nicht angezeigt wird und dass du es bei der Aufforderung eingeben musst. Mit diesen Parametern kannst du dein Root-Konto sicher machen.
2. Verwalte deine Datenbank mit phpMyAdmin
Wenn du lieber eine grafische Benutzeroberfläche (GUI) verwendest, kannst du die MySQL-Datenbank auch über phpMyAdmin verwalten. Über diese Oberfläche kannst du neue Konten anlegen, Berechtigungen einsehen und bearbeiten und Konten löschen, die du nicht mehr benötigst. Um diese Aktionen auszuführen, musst du als root eingeloggt sein.
Trotzdem ist es wichtig zu erwähnen, dass phpMyAdmin keine Benutzerverwaltung durchführt. Hinter den Kulissen übergibt es lediglich den Benutzernamen und das Passwort an MySQL. Die Datenbank entscheidet dann, ob dieser Benutzer auf die angegebenen Daten zugreifen oder eine bestimmte Aktion durchführen kann.
Du kannst dieses Tool kostenlos von der Webseite von phpMyAdmin herunterladen. Wenn du Kinsta-Kunde bist, kannst du phpMyAdmin auch im Rahmen unserer Hosting-Angebote nutzen.
Um auf phpMyAdmin zuzugreifen, logge dich in dein MyKinsta-Dashboard ein. Wähle im linken Menü den Punkt Websites.
Wähle dann die Webseite aus, auf der du deine MySQL-Datenbank bearbeiten möchtest. Auf dem folgenden Bildschirm scrollst du nach unten zum Abschnitt Datenbankzugriff.
Unter Datenbankzugriff findest du deinen Datenbanknamen, deinen Benutzernamen und dein Passwort. Dann klickst du auf phpMyAdmin öffnen, um das Tool in einem neuen Tab zu starten. Wenn du dazu aufgefordert wirst, gibst du den Benutzernamen und das Passwort aus dem Datenbankzugriff von MyKinsta ein.
Melde dich jetzt in deinem phpMyAdmin-Konto an und wähle den Link Benutzer. Von dort aus kannst du alle deine MySQL-Benutzerkonten verwalten.
So erstellst und verwaltest du einen MySQL-Benutzer (4 wichtige Vorgänge)
Sobald du mit deiner Datenbank verbunden bist, kannst du viele verschiedene Aktionen durchführen. Hier sind vier wichtige Möglichkeiten, wie du deine MySQL-Benutzerkonten verwalten kannst.
1. Einen neuen Benutzer auf dem Datenbankserver anlegen
In phpMyAdmin kannst du über den Link Neuen Benutzer hinzufügen ein Konto erstellen. Anschließend kannst du die Textfelder und Dropdowns nutzen, um dieses Konto zu konfigurieren:
An dieser Stelle hast du die Möglichkeit, globale Berechtigungen zu vergeben. Dadurch erhält der Benutzer uneingeschränkten Zugriff auf alle deine Datenbanken und Tabellen. Es kann ein Sicherheitsrisiko darstellen, daher solltest du diese erweiterten Rechte nur dann vergeben, wenn sie erforderlich sind. Du kannst datenbankspezifische Berechtigungen zuweisen, nachdem du dieses Konto erstellt hast.
Um ein neues Konto über die MySQL-Shell zu erstellen, gibst du den Befehl CREATE USER ein. Du musst auch einen Benutzernamen und den Hostnamen angeben. Letzteres ist der Name des Hosts, von dem aus sich der Benutzer mit dem MySQL-Server verbindet:
CREATE USER ‚exampleuser’@’localhost‘ IDENTIFIED BY ‚password‘;
Achte beim Eingeben dieses Befehls darauf, exampleuser und password durch die Werte zu ersetzen, die du diesem Konto zuweisen möchtest. Der Benutzer kann sein MySQL-Passwort zu einem späteren Zeitpunkt jederzeit ändern.
Im obigen Beispiel setzen wir den Hostnamen auf „localhost“. Der Benutzer kann sich also nur von dem System aus mit dem MySQL-Server verbinden, auf dem dieser läuft.
Du kannst das Wort localhost durch die Adresse deines Servers ersetzen. Wenn dieser Benutzer zum Beispiel von einem Rechner mit der Internetprotokoll (IP)-Adresse 11.0.0.0 auf MySQL zugreifen muss, dann führst du Folgendes aus:
CREATE USER ’newuser’@’11.0.0.0′ IDENTIFIED BY ‚user_password‘;
Wenn du einen Benutzer erstellen willst, der sich von jedem Host aus verbinden kann, kannst du den Platzhalter % in deinen Befehl einfügen. Zum Beispiel:
CREATE USER ’newuser’@’%‘ IDENTIFIED BY ‚user_password‘;
Alternativ kannst du den Wert für den Hostnamen auch ganz weglassen. Dies führt zum gleichen Ergebnis.
2. MySQL-Berechtigungen über phpMyAdmin zuweisen
Standardmäßig hat ein neuer MySQL-Benutzer keine Berechtigung, irgendwelche Aktionen durchzuführen. Selbst wenn er sich in seinem Konto anmeldet, kann er keine Tabellen erstellen oder Daten auswählen.
Nachdem du einen neuen Benutzer erstellt hast, musst du ihm in der Regel einige Rechte zuweisen. Um die Sicherheit deiner Datenbank zu gewährleisten, ist es eine gute Idee, jedem Benutzer die Mindestrechte zu geben, die er für seine Arbeit benötigt. Außerdem ist es ratsam, die Berechtigungen regelmäßig zu überprüfen und unnötige Berechtigungen zu entziehen.
Kinsta-Kunden können die Berechtigungen eines Benutzers im phpMyAdmin-Dashboard Benutzer bearbeiten.
Suche dort das Konto, das du ändern möchtest, und klicke auf das Stiftsymbol daneben. Du kannst nun alle Berechtigungen bearbeiten, auf die dieser Benutzer Zugriff hat.
Uneingeschränkten Zugang zu gewähren, scheint die einfachste Lösung zu sein, aber es kann deine Datenbank in Gefahr bringen. Wenn du keinen besonderen Grund hast, solltest du in der Regel vermeiden, jemandem freie Hand über deine gesamte Datenbank zu geben.
3. Ändern der Benutzerrechte über die MySQL-Shell
Wenn du die MySQL-Shell verwendest, kannst du dir mit dem Befehl SHOW GRANTS alle Berechtigungen anzeigen lassen, die einem bestimmten Konto erteilt wurden. Du musst „username“ und „localhost“ durch die Informationen für das Konto ersetzen, das du einsehen möchtest:
SHOW GRANTS FOR ‚username’@’localhost‘;
Wenn du ein Konto erstellst, ist diese Liste leer. Mit dem GRANT-Befehl kannst du den Zugriff auf verschiedene Teile deiner Datenbank zuweisen:
GRANT type_of_permission ON database_name.table_name TO ‚username’@’localhost‘;
In diesem Befehl geben wir die Berechtigungen an, die wir zuweisen, gefolgt von der Datenbank und den Tabellen, für die diese Änderungen gelten sollen. Zum Schluss geben wir den Benutzernamen und den Server an, der die genannten Berechtigungen erhalten soll. Eine vollständige Liste aller verfügbaren Berechtigungen findest du in der offiziellen MySQL-Dokumentation.
Wenn du Zugriff auf eine beliebige Datenbank oder Tabelle gewähren willst, kannst du ein Sternchen (*) anstelle des Datenbank- oder Tabellennamens verwenden. Zum Beispiel:
GRANT ALL PRIVILEGES ON *. * TO ‚exampleuser’@’localhost‘;
Hier gewähren wir exampleuser das Recht, alle Aufgaben in allen Datenbanken und Tabellen zu lesen, zu bearbeiten, auszuführen und auszuführen. Normalerweise solltest du diese erweiterten Rechte für Administratoren reservieren.
Manchmal musst du eine Berechtigung wieder entziehen. Zum Beispiel, wenn du ein Recht versehentlich erteilt hast oder wenn der Benutzer es nicht mehr braucht. Um den Zugriff zu entziehen, führe Folgendes aus:
REVOKE type_of_permission ON database_name.table_name FROM ‚username’@’localhost‘;
Wenn du die Berechtigungen mit dem GRANT-Befehl vergibst, sollte MySQL diese Änderungen bemerken und sie automatisch anwenden. Es ist jedoch ratsam, die Berechtigungen eines Benutzers mit dem Befehl FLUSH PRIVILEGES; zu aktualisieren.
4. Entfernen eines Benutzers aus MySQL
Es kann vorkommen, dass du einen Benutzer aus deiner MySQL-Datenbank entfernen musst. Vielleicht verlässt diese Person dein Unternehmen oder sie wechselt in eine andere Abteilung. Es kann auch sein, dass du die Anzahl der Personen, die auf deine Datenbank zugreifen können, aktiv einschränken willst, um deine Sicherheit zu erhöhen.
Wenn du mit der MySQL Shell arbeitest, kannst du ein Konto mit der Anweisung DROP USER löschen. Mit diesem Befehl werden auch alle Berechtigungen des Benutzers gelöscht:
DROP USER ‚username’@’localhost‘;
Wenn du ein MyKinsta-Kunde bist, kannst du Benutzer auch ganz einfach über die Benutzer-Seite von phpMyAdmim löschen. Suche auf dieser Seite die Person, die du entfernen möchtest. Du kannst dann das zugehörige Kontrollkästchen aktivieren und auswählen, ob du auch alle Datenbanken mit demselben Namen löschen möchtest:
Wenn du damit einverstanden bist, klickst du auf Los. Diese Person wird nun aus MySQL gelöscht.
Zusammenfassung
MySQL erstellt automatisch einen Superuser-Account ‚root’@’localhost‘, aber es ist nie eine gute Idee, diesen für alles zu benutzen. Wenn du mehrere MySQL-Benutzer anlegst, kannst du ihnen unterschiedliche Rechte zuweisen, um deine Daten zu schützen.
Außerdem kannst du so sicherstellen, dass du den Zugriff auf deine Datenbank nicht verlierst, weil du Probleme mit ‚root’@’localhost‘ hast.
Als Betreiber einer Webseite ist deine Datenbank oft dein wertvollstes Gut. Unser Team von erfahrenen WordPress-Experten bei Kinsta hilft dir dabei, deine Datenbank in einem Top-Zustand zu halten.
Alle unsere Hosting-Angebote beinhalten Support rund um die Uhr! Wenn du mit Kinsta zusammenarbeitest, hast du immer WordPress-Veteranen zur Hand, die dir helfen, Probleme mit deiner MySQL-Datenbank zu lösen.