Heim >Datenbank >MySQL-Tutorial >Wie erteile ich einer MySQL-Datenbank alle Berechtigungen bis auf eine einzelne Tabelle?
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!