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
Freigeben: 2024-11-03 19:50:03
Original
916 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
    Nach dem Login kopieren
  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";
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage