Wenn es ein einzelnes Privileg gibt, das für ALLE READ-Operationen in der Datenbank steht.
Es hängt davon ab, wie Sie "alle gelesen" definieren.
Das "Lesen" aus Tabellen und Ansichten ist das SELECTPrivileg. Wenn Sie das mit "alles gelesen" meinen, dann ja:
GRANT SELECT ON *.* TO 'username'@'host_or_wildcard' IDENTIFIED BY 'password';
Es hört sich jedoch so an, als ob Sie die Fähigkeit meinen, alles zu "sehen", "zu schauen, aber nicht zu berühren". Also, hier sind die anderen Arten des Lesens, die mir in den Sinn kommen:
Das "Lesen" der Definition von Ansichten ist das SHOW VIEWPrivileg.
Das "Lesen" der Liste der aktuell ausgeführten Abfragen durch andere Benutzer ist das PROCESSPrivileg.
Das "Lesen" des aktuellen Replikationsstatus ist das REPLICATION CLIENTPrivileg.
Beachten Sie, dass einige oder alle dieser Informationen je nach Art des betreffenden Benutzers möglicherweise mehr Informationen enthalten, als Sie offenlegen möchten.
Wenn Sie dies lesen möchten, können Sie eine dieser (oder eine andere der verfügbaren) Berechtigungen in einer einzigen GRANTAnweisung kombinieren .
GRANT SELECT, SHOW VIEW, PROCESS, REPLICATION CLIENT ON *.* TO ...
Es gibt jedoch kein einzelnes Privileg, das eine Teilmenge anderer Privilegien gewährt. So hört es sich an, als würden Sie fragen.
Wenn Sie die Dinge manuell ausführen und nach einer einfacheren Möglichkeit suchen, dies zu tun, ohne sich an die genaue Gewährung erinnern zu müssen, die Sie normalerweise für eine bestimmte Benutzerklasse gewähren, können Sie die Anweisung nachschlagen, um die Bewilligungen eines vergleichbaren Benutzers neu zu generieren, und sie ändern So erstellen Sie einen neuen Benutzer mit ähnlichen Berechtigungen:
mysql> SHOW GRANTS FOR 'not_leet'@'localhost';
+------------------------------------------------------------------------------------------------------------------------------------+
| Grants for not_leet@localhost |
+------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, REPLICATION CLIENT ON *.* TO 'not_leet'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Wenn Sie 'not_leet' und 'localhost' so ändern, dass sie dem neuen Benutzer entsprechen, den Sie zusammen mit dem Kennwort hinzufügen möchten, wird eine wiederverwendbare GRANTAnweisung zum Erstellen eines neuen Benutzers erstellt.
Wenn Sie möchten, dass ein einzelner Vorgang den begrenzten Satz von Berechtigungen einrichtet und Benutzern gewährt und möglicherweise alle nicht verdienten Berechtigungen entfernt, können Sie eine gespeicherte Prozedur erstellen, die alles enthält, was Sie tun möchten. Im Hauptteil der Prozedur würden Sie die GRANTAnweisung mit dynamischem SQL erstellen und / oder die Grant-Tabellen selbst direkt bearbeiten.
In dieser aktuellen Frage zu Datenbankadministratoren wollte das Poster die Möglichkeit für einen nicht privilegierten Benutzer, andere Benutzer zu ändern. Dies ist natürlich normalerweise nicht möglich - ein Benutzer, der andere Benutzer ändern kann, ist dies per Definition nicht Ein nicht privilegierter Benutzer - gespeicherte Prozeduren - stellten in diesem Fall jedoch eine gute Lösung dar, da sie mit dem Sicherheitskontext seines DEFINERBenutzers ausgeführt werden und es jedem mit EXECUTEBerechtigung für die Prozedur ermöglichen, vorübergehend eskalierte Berechtigungen anzunehmen, damit er die spezifischen Dinge tun kann Verfahren erreicht.
SHOW VIEWnichtSHOW_VIEW, aber Sie müssen dies einem Benutzer nicht gewähren, es sei denn, Sie möchten, dass erSHOW CREATE VIEWdie Ansichten bearbeiten kann ... er kann aus den Ansichten mit dem einzigenSELECTPrivileg auswählen . Was meinen Sie mit "Alle Lesevorgänge in Grant gruppieren"?