🧚 Hör mal! Beekeeper Studio ist eine schnelle, moderne Open-Source-MySQL-GUI Download
8. September 2024 Von Matthew Rathbone

MySQL-Berechtigungen legen fest, welche Aktionen ein User in einer Datenbank ausführen darf. Mit SHOW GRANTS kannst du diese Berechtigungen prüfen und sicherstellen, dass User die richtigen Zugriffsrechte haben. Du kannst:

  • Alle Berechtigungen eines bestimmten Users anzeigen.
  • User aus Sicherheitsgründen überprüfen.
  • Berechtigungen auf Basis der aktuellen Grants anpassen.

Bevor du weiterliest, wollte ich dir kurz unseren modernen und schnellen MySQL-Datenbankmanager Beekeeper Studio vorstellen. Sein SQL-Editor vervollständigt beim Tippen automatisch und speichert einen Verlauf aller Abfragen, die du ausgeführt hast – praktisch, wenn du Berechtigungen prüfst. Für MySQL ist er kostenlos nutzbar, hier kannst du ihn herunterladen.

Grundlegende Syntax von SHOW GRANTS

SHOW GRANTS FOR 'username'@'host';
  • ‘username’ steht für den MySQL-User.
  • ‘host’ steht für den Hostnamen oder die IP-Adresse, von der aus sich der User verbindet.

Grants für einen bestimmten User anzeigen

Angenommen, du hast einen User ‘john’, der sich von localhost aus verbindet. Um seine Berechtigungen zu sehen, nutze folgende Abfrage:

SHOW GRANTS FOR 'john'@'localhost';

Erwartete Ausgabe:

+---------------------------------------------------------+
| Grants for john@localhost                               |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO `john`@`localhost`                |
| GRANT SELECT, INSERT ON `mydb`.* TO `john`@`localhost`  |
+---------------------------------------------------------+

In dieser Ausgabe:

  • GRANT USAGE bedeutet, dass der User keine globalen Berechtigungen hat.
  • GRANT SELECT, INSERT ON mydb.* zeigt, dass john SELECT- und INSERT-Berechtigungen für alle Tabellen in der Datenbank ‘mydb’ hat.

Grants für alle User anzeigen (MySQL 5.7 und neuer)

In MySQL gibt es keinen einzelnen Befehl, der die Grants aller User direkt anzeigt. Du kannst aber die nötige Abfrage aus der Tabelle mysql.user generieren und dann SHOW GRANTS für jeden User ausführen:

SELECT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';') 
FROM mysql.user;

Diese Abfrage erzeugt eine Liste von SHOW GRANTS-Anweisungen für jeden User im System. Hier eine Beispielausgabe:

+--------------------------------------------------+
| CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host |
+--------------------------------------------------+
| SHOW GRANTS FOR 'root'@'localhost';              |
| SHOW GRANTS FOR 'john'@'localhost';              |
| SHOW GRANTS FOR 'admin'@'192.168.1.10';          |
+--------------------------------------------------+

Anschließend kannst du die SHOW GRANTS-Abfrage ausführen, um die Berechtigungen eines bestimmten Users anzuzeigen.

Grants für den aktuellen User anzeigen

Um die Grants des aktuell mit der Datenbank verbundenen Users anzuzeigen, kannst du die Funktion CURRENT_USER() verwenden:

SHOW GRANTS FOR CURRENT_USER();

Erwartete Ausgabe:

+---------------------------------------------------------+
| Grants for current user                                 |
+---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost`       |
+---------------------------------------------------------+

Dieser Befehl ist besonders praktisch, wenn du dir über deine eigenen Berechtigungen nicht sicher bist.

Die Ausgabe verstehen

  • GRANT USAGE: Der User hat keine globalen Berechtigungen, kann aber spezifische Berechtigungen für Datenbanken haben.
  • ALL PRIVILEGES: Gewährt alle Berechtigungen für eine Datenbank oder global, mit Ausnahme der GRANT OPTION.
  • GRANT OPTION: Erlaubt einem User, anderen Berechtigungen zu erteilen.
    Datenbankspezifische Grants: Berechtigungen wie SELECT, INSERT, UPDATE und DELETE können für eine bestimmte Datenbank oder Tabelle vergeben werden.

MySQL-GRANTS verstehen

MySQL bietet die GRANT-Anweisung, mit der Admins Usern Berechtigungen erteilen können.

Als Gegenstück gibt es die REVOKE-Anweisung, um Berechtigungen zu entziehen.

Bevor wir Berechtigungen ändern, müssen wir aber wissen, welche aktuell gelten – und genau hier kommt der Befehl SHOW GRANTS ins Spiel.

Der Befehl SHOW GRANTS zeigt die GRANT-Anweisung, die ausgeführt werden muss, um die Berechtigungen eines Users zu duplizieren.

Dieser Befehl funktioniert mit den Datenbank-Engines MySQL und MariaDB.

Fazit

Zusammengefasst: Der Befehl SHOW GRANTS in MySQL zeigt die Berechtigungen von Usern an. Er ist ein wichtiges Werkzeug für Datenbank-Admins, um Berechtigungen zu prüfen und zu verwalten.

Weitere Artikel, die dir gefallen könnten:

Beekeeper Studio ist eine kostenlose & Open-Source-MySQL-GUI

Ich nutze Beekeeper Studio in letzter Zeit für meine MySQL-Arbeit, und es ist schnell zu einem meiner liebsten Datenbank-Tools geworden. Die Oberfläche ist aufgeräumt, modern und ablenkungsfrei, sodass man sich ganz auf die Abfragen konzentrieren kann – ohne den Ballast, den man in manchen anderen Tools hat. - Surendra Singh

Beekeeper Studio ist ein schneller, intuitiver und einfach zu bedienender MySQL-Client. Er unterstützt auch jede Menge andere Datenbanken und läuft super unter Windows, Mac und Linux.

Die Linux-Version von Beekeeper hat 100% des Funktionsumfangs, ohne Abstriche und ohne Kompromisse.

Was MySQL-User über Beekeeper Studio sagen

Beekeeper Beekeeper Still a Newbie

Ich habe mich nach Jahren mit phpMyAdmin für dieses Programm entschieden – es fühlt sich an, als würde man eine Welt höherer Qualität betreten; hier hatte ich wirklich das Gefühl, dass man sich ernsthaft um den User kümmert. Das Konzept, die Umsetzung, die praktische Erfahrung – für all das bin ich Matthew aufrichtig dankbar.

Alex M

Fantastisches Tool, die praktischste IDE, die ich bisher für die Administration von Postgres- und MySQL-Datenbanken gefunden habe – sie funktioniert einfach, ohne Theater :-)

Bereit, deinen MySQL-Workflow zu verbessern?

download Kostenlos herunterladen