Der andere User soll selbständig Datenbanken anlegen und nutzen können.
Er soll aber meine Datenbanken nicht sehen oder administrieren können.
Zum Verstecken fremder Datenbanken gibt es gesonderte Rechte an SHOW DATABASES. Der Befehl lässt sich auch ganz abschalten.
Um zu verhindern, dass der Andere an deien Datenbanken rumspielt, aber selbst beliebige anlegen kann, gibt es zwei Möglichkeiten:
a) Du entziehst ihm die Rechte an deinen Datenbanken. Ich habe es nicht ausprobiert, aber da die Zugriffsrechte nach Relevanz sortiert werden, müssten entzogene Rechte an deinen Datenbanken eher zum Zuge kommen als allgemeine Rechte, d.h. Rechte an allen Datenbanken.
Das habe ich zuerst probiert, ihm global die Rechte zu geben und über die db-Tabelle alle Rechte an meinen Datenbanken zu entziehen, hat aber leider nicht geholfen. Global scheint lokal zu überschreiben. SHOW_DB bekomme ich gar nicht zu, da hab ich alles versucht, aber da gibt es wohl einen mysql bug, der scheint mich da zu beissen...
b) Du zwingst ihn, seine Datenbanken mit einem Kürzel beginnen zu lassen, z.B. usr1_bla, usr1_blo, usw. Die Spalte db der gleichnamigen Rechtetabelle darf die Platzhalter % und _ enthalten (siehe hier, "The “_” and “%” wildcards are allowed when specifying database names in GRANT statements", und hier). Mit GRANT .. ON usr1\_%.. kannst du seine Rechte also auf Datenbanken beschränken, die mit usr1_ beginnen.
Ok, das werde ich probieren, wenn das dem User nicht gefäält, dann muss ich weiter suchen...
Danke!