ute: mysql user rechte

Hallo,
ich habe einen mysql Server, den ich einem anderen user öffnen muss.

Leider ist es eine 4.x Version :-(

Der andere User soll selbständig Datenbanken anlegen und nutzen können.

Er soll aber meine Datenbanken nicht sehen oder administrieren können.

Frage: Gibt es wirklich keinen Weg, das zu erreichen? Kann ich keinen User anlegen, der zwar selbst Datenbanken anlegen kann und auf diesen alles tun (ohne dass ein Admin ihm diese Datenbanken jeweils anlegen und freigeben muss), aber zu vorhandenen DB's keinen Zugang hat?

Gebe ich dem User keine globalen Rechte, dann kann er auch keine DB's anlegen. Gebe ich ihm globale Rechte, habe ich keine Möglichkeit, diese Rechte für die 3 Datenbanken, die er nicht sehen soll einzuschränken. Dem User in db für die Datenbanken keine Rechte zu geben funktioniert nicht, offenbar wird db ignoriert, wenn es globale Rechte gibt.

Irgend ein Trick, wie es doch gehen kann?

Viele Grüße

Ute

  1. 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.

    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.

    1. 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!

      1. echo $begrüßung;

        b) Du zwingst ihn, seine Datenbanken mit einem Kürzel beginnen zu lassen, z.B. usr1_bla, usr1_blo, usw.
        Ok, das werde ich probieren, wenn das dem User nicht gefäält, dann muss ich weiter suchen...

        Noch ein Argument dafür: Das ist neben der Berechtigungsfrage auch gleichzeitig eine Maßnahme, um Datenbanken-Benennungskollisionen zu vermeiden.

        echo "$verabschiedung $name";