Benutzer suchen eine Lösung, die es einem Benutzer ermöglicht, vollständigen Zugriff auf eine Datenbank zu haben, mit Ausnahme einer bestimmten Tabelle, in der er nur SELECT-Berechtigungen haben sollte.
Trotz Versuchen, alle Berechtigungen für die Datenbank zu gewähren und dann gezielt nur SELECT-Berechtigungen für die gewünschte Tabelle gewähren oder Einfügungs-, Aktualisierungs- und Löschberechtigungen widerrufen, sind weiterhin Fehler aufgetreten.
Dynamische Gewährungserklärungsgenerierung:
Um den Prozess zu vereinfachen, können Sie die folgende SELECT CONCAT-Abfrage verwenden, um die erforderlichen GRANT-Anweisungen zu generieren:
<code class="sql">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";</code>
Schritte:
Entziehen Sie alle Berechtigungen für den Benutzer in der Datenbank:
<code class="sql">REVOKE ALL PRIVILEGES ON db.* FROM user@localhost; </code>
Beispiel:
REVOKE ALL PRIVILEGES ON my_db.* FROM my_user@localhost; SELECT CONCAT("GRANT UPDATE ON my_db.", table_name, " TO my_user@localhost;") FROM information_schema.TABLES WHERE table_schema = "my_db" AND table_name <> "special_table";
Das obige ist der detaillierte Inhalt vonWie erteile ich einer MySQL-Datenbank alle Berechtigungen bis auf eine einzelne Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!