Heim >Datenbank >MySQL-Tutorial >Wie erteile ich alle Berechtigungen in einer MySQL-Datenbank außer einer bestimmten Tabelle?
Gewähren von Berechtigungen für eine Datenbank mit Ausnahme einer bestimmten Tabelle in MySQL
Viele Datenbanken erfordern häufig die Gewährung unterschiedlicher Berechtigungen für verschiedene Benutzer. Einige Benutzer benötigen möglicherweise die vollständige Kontrolle über eine Datenbank, während andere möglicherweise nur begrenzte Berechtigungen für bestimmte Tabellen benötigen. In MySQL kann es unkompliziert sein, einem Benutzer umfassende Berechtigungen zuzuweisen; Allerdings kann das Zuweisen aller Berechtigungen außer für eine bestimmte Tabelle eine Herausforderung sein.
Erste erfolglose Versuche
Wie in der Anfrage des Benutzers erwähnt, wird versucht, alle Berechtigungen mit „db_name .*“ und die anschließende selektive Gewährung von SELECT-Berechtigungen für die gewünschte Tabelle überschreibt nicht die „all“-Berechtigungen. Darüber hinaus führt das Widerrufen von Einfüge-, Aktualisierungs- und Löschberechtigungen nach der Gewährung aller Berechtigungen zu einem Fehler, da für die spezifische Tabelle keine Gewährungsregel vorhanden ist.
Einzelne Berechtigungsgewährung
Während die individuelle Gewährung aller Berechtigungen für jede Tabelle in der Datenbank mit Ausnahme der schreibgeschützten Tabelle mühsam erscheinen mag, handelt es sich derzeit um die direkteste und zuverlässigste Methode. Dieser Ansatz stellt sicher, dass der Benutzer keine Aktualisierungsrechte für die spezifische Tabelle hat.
Einfacherer Weg?
Der Benutzer äußert die Hoffnung auf eine einfachere Lösung, und es gibt tatsächlich eine Technik, die den Komfort der Gewährung aller Privilegien mit dem Ausschluss einer bestimmten Tabelle kombiniert:
Alle Privilegien widerrufen:
REVOKE ALL PRIVILEGES ON db.* FROM user@localhost;
Verwenden Sie Information_schema, um GRANT-Anweisungen zu erstellen:
SELECT CONCAT("GRANT UPDATE ON db.", table_name, " TO user@localhost;") FROM information_schema.TABLES WHERE table_schema = "YourDB" AND table_name <> "table_to_skip";
Dieser Ansatz bietet eine schnellere und dynamischere Alternative zur manuellen Erteilung von Berechtigungen für jede Tabelle einzeln.
Das obige ist der detaillierte Inhalt vonWie erteile ich alle Berechtigungen in einer MySQL-Datenbank außer einer bestimmten Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!