Samstag, 5. August 2006
MySQL-Rechte erklärt für IT-Profis
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.

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.
Es folgt eine Erklärung aller Einträge in der Tabelle mysql.user
(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