MySQL partitionieren?
am 18.06.2007 18:25:30 von rabeHallo zusammen,
für ein UUG-Projekt[1] haben wir einen FreeBSD-Jailserver
aufgesetzt mit dem Ziel, mehrere unabhängige Userlands zu
bekommen (root-rechte!).
Um gemeinsamen RAM zu sparen soll nicht, (aber könnte) in
jedem Jail ein eigener mysqld laufen, sondern ein gemeinsamer
mysqld mit ausreichend viel Speicher, der gemeinsam genutzt wird (ca 320MB).
Das Problem ist nun, dass mysqld nicht ohne weiteres "partitioniert"
werden kann, d.h. ich kann nicht beliebig viele unabhängige
"root"-Accounts mit entsprechenden Superuser-Rechten haben.
Ich habe inzwischen herausgefunden, dass ich einem user "foo"
das erzeugen von eigenen Datenbanken erlauben kann, die alle
"foo_%" heissen dürfen, in mysql.db entsprechend:
Host='xyz', User='foo', Db='foo_%', ... alles andere auf 'Y'.
foo@xyz kann somit nicht nur auf alle Datenbanken foo_% zugreifen,
die es gibt, sondern auch beliebige Datenbanken anlegen, die so
heissen. Praktisch.
Nur wie kann ich dem User "foo" erlauben, eigene "unter-user" anzulegen,
die zB "foo_www", "foo_bar" oder "foo_privat" heissen?
Mein erster Ansatz wäre, ein zentrales Webfrontend zu entwickln
(oder zu nutzen), das jedem "Kunden" (Vereinsmitglied) seine eigene /
individuelle Benutzerverwaltung ermöglicht.
Lieber wäre mir, wenn MySQL die Rechteverwaltung abstrahiert und
intern die Datenbanken/Tabellen/etc auf unabhängigen Namespaces
transparent abbildet, so dass es aus Sicht der "Kunden" mehrere
"root"-User gibt (jedem sein eigener) und auch mehrere "mysql"-Schemata
coexistieren können.
Theoretisch wäre denkbar, dass man in jedem Jail einen eigenen
schlanken mysqld-Prozess laufen lässt, der den zentralen (fetten)
Server die Arbeit machen lässt, transparent für den mysql-client
im Jail
Gibt es hier Ansätze, wie man sowas lösen könnte?
Gruß
Raphael Becker
PS:
[1] http://wiki.uugrn.org/wiki/Top.uugrn.org/Jailkonzept bzw. [2]
[2] http://wiki.uugrn.org/wiki/Intern.uugrn.org/MySQL
PPS: Ich spreche hier von "Kunden" um den Begriff "User" nicht zu überladen.
Gemeint sind Menschen, die mehrere "User" haben können.
Das ganze ist Non-commercial ;)