Zothos Wrote:Verbessere es ruhig. Aber teste es auch ob es dann auch funktioniert
;-) Naja, bei meinen Zweifeln, warum das an der Stelle so ist, hätte ich gerne Rückmeldung von jemandem, der die Stelle/das System deutlich besser kennt.
Meine Analyse sql_delete_user():
[...]
1. User wird in ispCP gelöscht.
2. Die globalen Rechte werden "revoked" (mysql.user). Dieses setzt alle ggf. in der Tabelle gesetzten Rechte auf "N", löscht aber keinen Eintrag.
Warum? Die sollten doch eh komplett deaktiviert sein.
3. Die Einträge in mysql.user werden gelöscht und die Rechte geflusht.
Und hier kommt das ELSE:
4. Die Rechte auf der Tabelle werden "revoked" (mysql.db).
Das scheint nur zu funktionieren, wenn es den mysql.user noch gibt?
Wenn der User entfernt wurde, bekomme ich einen Fehler. Im Standardfall bleiben die Einträge vorhanden.
1. Zum ELSE:
Morgendliche Idee: Ist das eventuell dafür da, falls der User ggf. noch andere Tabellen hat? Ist das über die ispCP-GUI überhaupt möglich?
2. Fehler:
Bleibt aber der Fehler, dass die Einträge in der mysql.db nicht gelöscht werden.
3. Revoke:
Ist das überhaupt notwendig? Mein Problem ist, dass ich an der Stelle meines Wissens nicht prüfen kann, ob die Rechte überhaupt existieren. Ist kein Eintrag für user@% vorhanden (so meine neue Konfig-Möglichkeit) gibt es somit einen Fehler. Ein Löschen des Eintrags wäre einfacher.
Warum nicht "einfach":
1. delete user in mysql.user (wenn vorhanden)
2. delete tabellenrechte mysql.db (wenn vorhanden)
3. flush privileges
Für mich selbst kann ich das natürlich funktionsfähig hacken. Für einen sinnvollen Patch bitte ich um Diskussion.
Viele Grüße, Jens