Heim >Datenbank >MySQL-Tutorial >Wie erteile ich alle Berechtigungen in einer MySQL-Datenbank außer einer bestimmten Tabelle?

Wie erteile ich alle Berechtigungen in einer MySQL-Datenbank außer einer bestimmten Tabelle?

DDD
DDDOriginal
2024-11-04 05:20:291049Durchsuche

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

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:

  1. Alle Privilegien widerrufen:

    REVOKE ALL PRIVILEGES ON db.* FROM user@localhost;
  2. 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";
  3. Ergebnisse kopieren und ausführen
    Kopieren Sie die Ergebnisse der Abfrage und führen Sie sie aus sie im MySQL-Client, um allen Tabellen außer der angegebenen Aktualisierungsrechte zu gewähren.

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!

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