Heim >Datenbank >MySQL-Tutorial >Wie erteile ich einer MySQL-Datenbank alle Berechtigungen bis auf eine einzelne Tabelle?

Wie erteile ich einer MySQL-Datenbank alle Berechtigungen bis auf eine einzelne Tabelle?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-03 19:50:03869Durchsuche

How to Grant All Privileges to a MySQL Database Except for a Single Table?

So gewähren Sie einer MySQL-Datenbank alle Berechtigungen außer einer einzelnen Tabelle

Frage:

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.

Antwort:

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.

Lösung:

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:

  1. Entziehen Sie alle Berechtigungen für den Benutzer in der Datenbank:

    <code class="sql">REVOKE ALL PRIVILEGES ON db.* FROM user@localhost;  </code>
  2. Führen Sie die SELECT CONCAT-Abfrage aus, um die GRANT-Anweisungen zu generieren.
  3. Fügen Sie die generierten Anweisungen ein in Ihren MySQL-Client ein und führen Sie sie aus.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn