Kapitel 5: MySQL-Datenbankadministration 197
verweigert, ohne dass die db- oder host-Tabellen gepr¨uft werden. (Sie enthalten keine
Shutdown_priv-Spalte, daher gibt es keinen Grund, sie zur Pr¨ufung heranzuziehen.)
Bei Datenbank-bezogenen Anfragen (insert, update usw.) pr¨uft der Server zuerst die glob-
alen (superuser-) Berechtigungen, indem er im user-Tabelleneintrag nachsieht. Wenn der
Eintrag die verlangte Operation erlaubt, wird der Zugriff gew¨ahrt. Wenn die globalen
Berechtigungen in der user-Tabelle unzureichend sind, stellt der Server die Datenbank-
spezifischen Berechtigungen des Benutzers fest, indem er die db- und host-Tabellen pr¨uft:
1. Der Server sieht in der db-Tabelle nach einer
¨
Ubereinstimmung in den Host-, Db-
und User-Feldern nach. In den Host- und User-Feldern wird nach
¨
Ubereinstimmung
mit dem Hostnamen gesucht, von dem aus sich der Benutzer verbindet, und
nach
¨
Ubereinstimmung mit dem MySQL-Benutzernamen. Im Db-Feld wird nach
¨
Ubereinstimmung mit der Datenbank gesucht, mit der sich der Benutzer verbinden
will. Wenn es keinen Eintrag f¨ur Host und User gibt, wird der Zugriff verweigert.
2. Wenn es keinen ¨ubereinstimmenden db-Tabelleneintrag gibt und das Host-Feld nicht
leer ist, bestimmt dieser Eintrag die Datenbank-spezifischen Berechtigungen des Be-
nutzers.
3. Wenn das Host-Feld des ¨ubereinstimmenden db-Tabelleneintrags leer ist, bedeutet
das, dass die host-Tabelle festlegt, welchen Hosts Zugriff auf die Datenbank erlaubt
werden soll. In diesem Fall schl¨agt der Server weiter in der host-Tabelle nach,
um eine
¨
Ubereinstimmung in den Host- und Db-Feldern zu finden. Wenn kein
host-Tabelleneintrag passt, wird der Zugriff verweigert. Bei einer
¨
Ubereinstimmung
werden die Datenbank-spezifischen Berechtigungen des Benutzers als Schnittmenge
(nicht Vereinigungsmenge!) der Berechtigungen in den db- und host-Tabelleneintr¨agen
berechnet, was die Berechtigungen ergibt, die in beiden Eintr¨agen ’Y’ sind. (Auf
diese Weise k¨onnen Sie allgemeine Berechtigungen in den db-Tabelleneintr¨agen
vergeben und diese dann fallweise von Host zu Host beschr¨anken, indem Sie die
host-Tabelleneintr¨age benutzen.)
Nachdem die Datenbank-spezifischen Berechtigungen festgestellt wurden, die durch die db-
und host-Tabelleneintr¨age gew¨ahrt werden, f¨ugt der Server diese zu den globalen Berechti-
gungen in der user-Tabelle hinzu. Wenn das Ergebnis die verlangte Operation erlaubt, wird
der Zugriff gew¨ahrt. Ansonsten pr¨uft der Server die Tabellen- und Spalten-Berechtigungen
des Benutzers in den tables_priv- und columns_priv-Tabellen und f¨ugt diese zu den Be-
nutzerberechtigungen hinzu. Aus dem Ergebnis ergibt sich, ob der Zugriff erlaubt oder
verweigert wird.
Als Boole’scher Term ausgedr¨uckt kann die vorstehende Beschreibung der Berechnung der
Benutzerrechte wie folgt zusammengefasst werden:
globale Berechtigungen
ODER (Datenbankberechtigungen UND Hostberechtigungen)
ODER Tabellenberechtigungen
ODER Spaltenberechtigungen
Vielleicht ist es nicht offensichtlich, warum der Server bei anf¨anglich als unzureichend
herausgefundenen globalen user-Eintragsberechtigungen f¨ur die verlangte Operation
diese Berechtigungen anschließend zu den Datenbank-, Tabellen- und Spalten-spezifischen
Berechtigungen hinzuz¨ahlt. Der Grund liegt darin, dass eine Anfrage m¨oglicherweise
mehr als eine Sorte von Berechtigungen erfordert. Wenn Sie beispielsweise ein INSERT
Comentarios a estos manuales