Ich   Entwicklung   Lösungen Apache PHP mySQL  
 

mySQL-Benutzungverwaltung mit phpMyAdmin

Die Benutzerverwaltung geschieht mithilfe der Datenbank mysql. Öffnen Sie die Datenbank mit phpMyAdmin.

Im folgenden beschreibe ich die sechs Tabellen in dieser Datenbank, wobei die Reihenfolge auch die Reihenfolge ist, in der mySQL die Benutzerechte überprüft.

user

Wenn jemand auf den mySQL-Server zugreift, wird zuerst in dieser Tabelle nachgesehen, ob die Benutzerrechte ausreichen, um die gewünschte Aktion durchzuführen.

Die Tabelle besteht aus den drei Attributen Host, User und Password. Alle weiteren Spalten geben die möglichen Benutzerrechte an; mögliche Werte sind Y (ja) und N (nein).

mySQL wählt immer den Benutzer mit den passendsten Attributen aus. Wenn also ein Benutzer root vom localhost mit Passwort test zugreifen möchte, dann wird erst im Datensatz mit Host localhost und User root nachgesehen, ob das Passwort stimmt. Wenn nicht, werden eventuell weitere, vorhandene Datensätze mit dem User root überprüft.

Für einen beliebigen Host geben Sie % an. Für ein beliebiges Passwort oder einen beliebigen Benutzernamen geben Sie keinen Wert an.

Hinweis

Y bedeutet, dass der User in allen Datenbanken und allen Tabellen dieses Recht besitzt! Seien Sie sparsam mit der Vergabe von diesen Rechten! N bedeutet, dass ein User kein generelles Recht hat, dass er aber sehr wohl Rechte für bestimmte Datenbanken, Tabellen oder Spalten haben kann. Wenn für den Zugriff des Users ein N eingegeben ist, dann sieht mySQL in der Reihenfolge, in der die Tabellen hier aufgeführt sind, nach, ob der User eventuell doch das Recht hat, die gewünschte Aktion auszuführen.

db

Wenn also ein N in der Tabelle user für die gewünschte Aktion angegeben war, prüft mySQL nach, ob der User das Recht zwar nicht generell, aber doch für die angesprochene Datenbank besitzt.

Hier sind die relevanten Spalten Host, Db und User, neben den Rechte-Spalten.

Durch die Spalte Host kann man einem User nur dann den Zugriff auf eine besttimmte Funktion für eine bestimmte Datenbank erlauben, wenn er von einem bestimmten Host auf den Server zugreift.

Auch hier und im Folgenden gilt: wenn ein N eingegeben ist, sieht mySQL in der nächsten Tabelle nach.

tables_priv

Die Struktur von tables_priv unterscheidet sich leicht von db und user, bewirkt aber prinzipiell das selbe. Die relevanten Spalten Host, Db, User und Table_name identifizieren eine bestimmte Tabelle einer bestimmten Datenbank. Grantor gibt an, wer einem User das Recht eingeräumt hat, Timestamp sagt, wann. In den Spalten Table_priv und Column_priv sind die Rechte angegeben.

columns_priv

Wenn selbst in tables_priv keine entsprechenden Rechte vorhanden waren, schaut mySQL auch noch hier nach. Hier sind Rechte für einzelne Spalten einer Tabelle gesetzt. Das kann sinnvoll sein, wenn beispielsweise bestimmte Mitarbeiter eines Unternehmens nicht alle Spalten einer Tabelle einsehen dürfen (so sollte zwar jeder Mitarbeiter die Telefonnummer eines anderen Mitarbeiters herausfinden können, nicht aber sein Gehalt).

Auf die Tabellen func und host gehe ich ihrer Unwichtigkeit wegen nicht weiter ein.

Ein komplettes Beispiel

Ich werde hier die SQL-Queries aufführen. Mit phpMyAdmin ist das Anlegen eines Nutzers einfacher, da Sie die Einfügen-Funktion von phpMyAdmin nutzen können.

Angenommen, Sie sind Provider, oder aber, Sie möchten zu Hause die selben Bedingungen haben wie bei Ihrem Provider. Wir legen also einen Benutzer userxyz mit Passwort xyz an, der nur auf die Datenbank dbxyz zugriff hat.

INSERT INTO user SET
	Host = '%',
	User = 'userxyz',
	Password = PASSWORD('xyz');

Da die anderen Spalten nicht angegeben werden, erhalten Sie den Standardwert N.

INSERT INTO db SET
	Host = '%',
	Db = 'dbxyz',
	User = 'userxyz',
	Select_priv = 'Y',
	Insert_priv = 'Y',
	Update_priv = 'Y',
	Delete_priv = 'Y',
	Create_priv = 'Y',
	Drop_priv = 'Y',
	Index_priv = 'Y',
	Alter_priv = 'Y';

Für GRANT und REFERENCES wird der Standardwert N übernommen. Auf diese Weise kann der User keine Datenbanken und Tabellen außerhalb seiner eigenen Datenbank erzeugen oder löschen, und auch niemand anderes Zugriff gewähren.

Hinweis

Vergessen Sie nicht, mySQL nach Änderungen neu zu starten!

Geschafft!

Glückwunsch! Sie haben offensichtlich meine Tutorien durchgearbeitet. Dies sollte Ihnen einen Einstieg ermöglicht haben.

Weitere Artikel und Skripte zu Apache, PHP und mySQL finden Sie unter dem Thema Lösungen.

URL: www.intermitto.net/mysql/phpmyadmin/benutzer/
© 2004-05 Jens Becker - intermitto.net v5.1
Letzte Änderung: 23.08.2005

Home - Kontaktformular - Downloads - Suche und Sitemap - Impressum
Entwicklung - Problemlösungen - Tutorials: Apache PHP mySQL

user  pass