phpmyadmin ohne login / MySQL-Benutzer-Rechte

Indi

Member of Honour
Ich hab mir nun vorgestern wampp1 und wampp1 lokal installiert. Also Apache Server 1/2 mit Perl, PHP und MySQL Unterstützung.

System is übrigens WinXP, nur mal nebenbei. Das ganze läuft auch ganz stabil, nur womit ich Probleme hab ist die Logik hinter der Vergabe der Rechte der SQL-Datenbanken zu verstehen.

Was mir schonmal nicht eingeht ist, dass phpmyadmin keinen Userlogin hat. Sollte man da nicht gleich mal einen htaccess-Login davorschalten?

Mal ganz abgesehen davon, dass die Daten vom phpmyadmin nicht im htdocs Verzeichnis liegt sondern in einem eigenen Verzeichnis in der gleichen Ordnerebenene wie eben htdocs! Ich war immer der Meinung, dass die Daten die Online gehen sollten im htdocs Verzeichnis liegen und die cgi-relevanten eben im cgi-bin Verzeichnis.

Aber zurück zum eigentlichen Thema. phpmyadmin ohne Login Option. Steig ich ein, kommt gleich mal folgenden Warnmeldung:

Ihre Konfigurationsdatei enthält Einstellungen (Benutzer "root" ohne Passwort), welche denen des MySQL-Stardardbenutzers entsprechen. Wird Ihr MySQL-Server mit diesen Einstellungen betrieben, so können Unbefugte leicht von außen auf ihn zugreifen. Sie sollten diese Sicherheitslücke unbedingt schließen!

Gut, is logisch, dass mir wampp1/2 nicht gleich ein root-pwd anlegt. Denk ich mir halt leg ich das an. Das pwd eingetragen komm ich klarerweise dann nicht mehr in phpmyadmin rein. Auch logisch.

Nun zu den Rechten:
Wenn ich das richtig verstanden habe, brauch ich zwei Benutzer. Einen "Jeder" und einen "root".
Root darf alles, Jeder darf halt nur eingeschränkte Sachen machen. Bei "Jeder" darf ich ja keinen Host eintragen, damit die User eben von überall zugreifen können. Wenn ich nun nur einen "root" anlege, mit pwd und dem Host-Eintrag "localhost", checkt mir der dann wirklich, dass root nur von dem PC aus zugreifen kann, wo auch das ganze System drauf liegt?

Bzw. wenn ich nun beim Host-Eintrag für den Benutzer "root" nicht "localhost" eintrage, so dass ich auch von einem anderen PC auch auf mein phpmyadmin zugreifen kann, reicht es dann, wenn ich vor das Verzeichnis von phpmyadmin einen .htaccess-Login lege? Weil ich könnt ja auch eigentlich von einem einfach PHP-Script aus, mit dem Benutzer "root" auf eine Datenbank zugreifen und zb. eine Datenbank schnell löschen. Dann erübrigt sich ja wieder htaccess.

Fragen über Fragen, wäre nett, wenn mich jemand aufklären könnte, wie das ganze wirklich funktioniert.
 
Original von Indi
Was mir schonmal nicht eingeht ist, dass phpmyadmin keinen Userlogin hat. Sollte man da nicht gleich mal einen htaccess-Login davorschalten?

phpmyadmin bietet sogar 3 verschiedene Zugangsberechtigungen an:
  • User in der Config-Datei
  • HTTP-Authentifizeirung
  • cookie based
Von daher bräuchtest du kein htaccess sondern musst nur die Werte in der config.inc.php anpassen.

Original von Indi
Mal ganz abgesehen davon, dass die Daten vom phpmyadmin nicht im htdocs Verzeichnis liegt sondern in einem eigenen Verzeichnis in der gleichen Ordnerebenene wie eben htdocs! Ich war immer der Meinung, dass die Daten die Online gehen sollten im htdocs Verzeichnis liegen und die cgi-relevanten eben im cgi-bin Verzeichnis.

Ich finde die Flexibilität des Apache eine seiner Stärken.
Du kannst in den virtual host-Direktiven eigentlich jedes beliebige Verzeichnis angeben. Sollte man nur nicht!

Original von Indi
Nun zu den Rechten:
Wenn ich das richtig verstanden habe, brauch ich zwei Benutzer. Einen "Jeder" und einen "root".
Root darf alles, Jeder darf halt nur eingeschränkte Sachen machen. Bei "Jeder" darf ich ja keinen Host eintragen, damit die User eben von überall zugreifen können. Wenn ich nun nur einen "root" anlege, mit pwd und dem Host-Eintrag "localhost", checkt mir der dann wirklich, dass root nur von dem PC aus zugreifen kann, wo auch das ganze System drauf liegt?

Diese host-Angebe bezieht sich auf die mySQL und nicht auf phpmyadmin. In der mySQL wird diese Angabe tatsächlich in der Tabelle mysql.users abgelegt.
Das funktioniert auch.

Original von Indi
Bzw. wenn ich nun beim Host-Eintrag für den Benutzer "root" nicht "localhost" eintrage, so dass ich auch von einem anderen PC auch auf mein phpmyadmin zugreifen kann, reicht es dann, wenn ich vor das Verzeichnis von phpmyadmin einen .htaccess-Login lege? Weil ich könnt ja auch eigentlich von einem einfach PHP-Script aus, mit dem Benutzer "root" auf eine Datenbank zugreifen und zb. eine Datenbank schnell löschen. Dann erübrigt sich ja wieder htaccess.

Öhhh, da geht jetzt was durcheinander.
Du legst den User "root" an, aber mit Passwort und setzt die Berechtigung auf localhost. In der config.inc.php setzt du die Authentifizierungsmethode auf HTTP und hast so den selben Effekt wie htaccess bloß sicherer (kein user/pw in einem file abgelegt). Dann kannst du dich von jedem beliebigen Rechner auf phpMyAdmin als root anmelden, mit allen Rechten. Für andere User kannst du das genauso machen und modifizierst halt nur die Rechte (grant, shutdown).
Das der User root nur den host "localhost" zugewiesen hat, hat einen anderen Sinn. Nimm mal an, jemand bekommt mit das dein root ohne pw läuft. Dann kann man ein Script schreiben und von jedem beliebigen Server als root auf deine DB zugreifen, mit allen Konsequenzen.
Wenn localhost gesetzt ist, muss ein Angreifer erst mal auf deinen Server um Schweinereien zu machen.

Original von Indi
Fragen über Fragen, wäre nett, wenn mich jemand aufklären könnte, wie das ganze wirklich funktioniert.

Hoffe, ich habe dein Problem richtig verstanden.

Gruss
SIMB
 
Zurück
Oben