Samstag, 5. August 2006
MySQL-Rechte erklärt für IT-Profis
netzstrohm, 00:27h
Die Rechte-Vergabe ist zwar in sich logisch aber nicht für jeden Anfänger leicht verständlich.
Deshalb hier die Grundlagen der Rechtevergabe von MySQL.
(die wichtigsten fett) MySQL-Rechte (enden alle mit _privilege)
Deshalb hier die Grundlagen der Rechtevergabe von MySQL.
MySQL Nutzer und Rechte
MySQL hat eine sehr ausgefeilte Rechtevergabe.
Diese fusst auf den drei tabellen user + host sowie auf den
Tabellen db , tables_priv. columns_priv, die alle in der Datenbank
mysql liegen.
Damit kann man die Rechte bis auf Spaltenebene herunter sehr fein dosieren.
Grob gesagt steuern user + host wer von welchem Rechner
was machen darf.
Betrachten wir folgenden Eintrag in der Tabelle user:
Host | User | Passw | SEL | INS | UPD | DEL | CRE | DRO | REL | SH | PR | FI | GR | RE | IN | AL |
localhost | root | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |
% | Sam | 4z%7v | Y | Y | Y | N | N | N | N | N | N | N | N | N | N | N |
% | Web | Zg3& | N | N | N | N | N | N | N | N | N | N | N | N | N | N |
Hier hat der User
-
Root ohne Passwort, wenn er sich von localhost
einloggt alle Rechte auf alle Datenbanken, er ist der Superuser
(das ist u.U. eine Sicherheitslücke !!) aber root kann sich nicht
von außen einloggen. -
Sam die Rechte SELECT, INSERT, UPDATE auf ALLE Datenbanken egal
von wo er sich einloggt. -
Web gar keine Rechte. Was kann er dann damit anstellen ? Web
bekommt nur für die Datenbank z.B. weblog bestimmte Rechte,
die dann in der Tabelle db eingetragen werden. Analog kann man die
Rechte durch Einträge in die Tabelle tables_priv sowie columns_priv
die Rechte auf einzelne Tabellen und sogar einzelne Spalten
beschränken. Der Nutzer muss mit Passwort trotzdem in der Tabelle
user angelegt sein, damit er sich am Server authentifizieren kann. -
Die Tabelle host wird eigentlich nur benutzt, wenn der gleiche Nutzer
von verschiedenen Zugangshosts verschiedene Datenbankrechte haben soll.
(die wichtigsten fett) MySQL-Rechte (enden alle mit _privilege)
Die Tabelle user
!! Achtung !! Ab MySQL 5.XX hat Tabelle user 37 Spalten (+20) und
es sind weitere Tabellen in MySQL dazugekommen.
Feldbez. | Erklärung | Bemerkung | Spalten_Nr |
Host | Rechner von dem Zugriff erfolgt | % = alle
localhost = eigener Rechner |
1 |
User | Loginname | 2 | |
Password | Passwort verschlüsselt | Passwort-eingabe nur über password (’...’) | 3 |
Select_privilege | Darf SELECT –Abfragen durchführen | 4 | |
Insert.. | Darf neue Daten mit INSERT einfügen | 5 | |
Update
|
Darf bestehende Daten mit UPDATE verändern | 6 | |
Delete | Darf Datensätze mit DELETE löschen | 7 | |
Create
|
Nutzer darf neue Datenbank mit CREATE anlegen | Die folgenden Rechte hat normalerweise nur root / admin | 8 |
Drop | Nutzer darf Datenbank mit DROP löschen | 9 | |
Reload | Nutzer darf Datenbank neu laden | 10 | |
Shutdown | Nutzer darf Datenbank beenden Server läuft weiter | 11 | |
Process | Nutzer darf Processinformationen abrufen | 12 | |
File | Nutzer darf in/aus Datenbank in /aus Datei schreiben | 13 | |
Grant | Nutzer darf Rechte mit GRANT vergeben | 14 | |
References | Fremdschlüssel z.Zt. noch nicht benutzt | 15 | |
Index | Nutzer darf Index anlegen | 16 | |
ALTER | Nutzer darf Tabellenkonfiguration ändern | 17 |
... comment