Informatik :: PHP + MySQL :: Rechte

Rechte

Ein relationales Datenbanksystem ist so angelegt, dass Informationen relativ leicht in ihm gespeichert und wiedergewonnen werden können.
Oft sind in einem solchen System Daten gespeichert, auf die nicht jedermann Zugriff haben soll. Diese Daten müssen also geschützt werden.
Häufig ist es so, dass nur ein bestimmter Personenkreis auf spezielle Daten zugreifen und sie verändern darf.
Wie umfassend der Schutz sein soll, hängt von den Daten und vom relevanten Personenkreis ab, d.h. Rechte werden je nach den Anforderungen vergeben.

Der Administrator des MySQL-Servers kann mit GRANT und REVOKE Zugriffsrechte auf 4 verschiedenen Ebenen einstellen:

  1. Globale Ebene
    Diese Rechte gelten für alle Datenbanken auf dem Server.
    Sie werden in der Systemtabelle mysql.user gespeichert.

  2. Datenbankebene
    Diese Rechte beziehen sich auf eine bestimmte Datenbank.
    Sie werden in den Systemtabellen mysql.db und mysql.host gespeichert.

  3. Tabellenebene
    Diese Rechte steuern den Zugriff auf einzelne Tabellen.
    Sie werden in den Systemtabellen mysql.tables_priv gespeichert.

  4. Spaltenebene
    Diese Rechte gelten für die einzelnen Spalten einer Tabelle.
    Sie werden in den Systemtabellen mysql.columns_priv gespeichert.

Hinweis:

In einer geschützten Umgebung, z.B. im Webspace eines Providers, stehen die Befehle GRANT und REVOKE in der Regel nicht zur Verfügung.
Der jeweils eingerichtete Benutzer hat keine Berechtigung, Rechte zu vergeben bzw. zu entziehen.

Rechtetypen:

Rechte_Typ Bedeutung
ALL PRIVILEGES alle Rechte
USAGE keine Rechte
ALTER CREATE DELETE DROP FILE GRANT
INDEX INSERT PROCESS RELOAD SELECT SHUTDOWN
erteilt dem Benutzer das Recht, diese Befehle zu nutzen

Der Befehl GRANT vergibt Rechte, während der Befehl REVOKE sie entzieht.

Allgemein

GRANT Rechte_Typ [(Spaltenliste)]
ON {Tabellenname | * | *.* | Datenbankname.*}
TO Benutzername [IDENTIFIED BY 'password']
[WITH GRANT OPTION];

bzw.

REVOKE Rechte_Typ [(Spaltenliste)]
ON {Tabellenname | * | *.* | Datenbankname.*}
FROM Benutzername

Beispiel 1:

Der Nutzer "Mueller" soll auf die Datenbank "test" alle Rechte erhalten:

GRANT ALL PRIVILEGES
ON test
TO Mueller

 

Beispiel 2:

Der Nutzer "Meier" darf in der Tabelle "person" der Datenbank "test" nur Datensätze einfügen:

GRANT INSERT
ON test.person
TO Meier

 

Beispiel 3:

Der Nutzer "Kunze" darf aus der Tabelle "person" der Datenbank "test" nur die Felder "Name" und "Vorname" einsehen (abfragen):

GRANT SELECT (Name,Vorname)
ON test.person
TO Kunze

 

Beispiel 4:

Dem Nutzer "Kunze" sollen alle Rechte auf die Tabelle "person" der Datenbank "test" entzogen werden:

REVOKE ALL PRIVILEGES
ON test.person
FROM Kunze

 



PHP HauptmenüSeitenanfang