Callam Geschrieben 24. März 2010 Geschrieben 24. März 2010 Hi, ich Ich komme mit den Rechten in MySQL soweit zurecht, das ich einem Benutzer anweisungen wie create, alter, insert etc. erlauben und verbieten kann. Nun möchte ich für meine DB einen neuen User anlegen, der nur aus bestimmten Tabellen lesen kann, aber keine Datensätze, Tabellen oder Datenbanken manipulieren darf. Soweit auch kein problem ... nur soll er temporäre tabellen frei erzeugen und verändern dürfen. wenn ich aber create, insert etc. verbiete können auch keine Temporären tabellen erstellt werden. gibt es eine möglichkeit, bei der rechtevergabe zwischen "create table" und "create temporary table" zu unterscheiden?
lausbub Geschrieben 24. März 2010 Geschrieben 24. März 2010 (bearbeitet) Hallo Callam, es gibt im phpmyadmin die möglichkeit das Recht create temporay table zu setzen -->bei Struktur http://web52.netroom.de/shutdown_privilegs.gif wenn du kein phpmyadmin hast geht es acuh mit folgendem befehl: grant create temporary tables on db_name.* to db_user gruß Bearbeitet 24. März 2010 von lausbub
Callam Geschrieben 24. März 2010 Autor Geschrieben 24. März 2010 (bearbeitet) hi, danke für die schnelle antwort funtioniert das auch so wenn man alter, insert etc nur auf temporäre tabellen beschränken will? [grad getestet] ... hat leider nicht funktioniert, ergebnis war das der user alle rechte bekommen hat... Bearbeitet 24. März 2010 von Callam
lausbub Geschrieben 24. März 2010 Geschrieben 24. März 2010 hi wollte gerade antworten du kannst meines wissens nach die rechte bei temp tabellen nicht weiter einschränken das heißt wenn du dem user create temp table rechte gibst hat er automatisch auch insert,select,etc
Callam Geschrieben 24. März 2010 Autor Geschrieben 24. März 2010 ich möchte die rechte ja nicht einschränken, sondern vergeben, das recht "create temporary table" leider nicht gleichzeitig bedeutet, dass auf diese auch selct, insert, update etc angewendet werden darf: drop temporary table if exists tmp_test; create temporary table tmp_test ... inhalte ...; select * from tmp_test; ... zum testen, kommt z.b. immer die fehlermeldung: SELECT command denied to user 'username'@'host' for table 'tmp_test'
lausbub Geschrieben 24. März 2010 Geschrieben 24. März 2010 hast du dich nach dem anlgen der tabelle von der db abgemeldet? die tabelle existiert nämlich nur solange bis du die session beendest
Callam Geschrieben 24. März 2010 Autor Geschrieben 24. März 2010 nein, die querys werden direkt hintereinander ausgeführt ohne abmelden zwischendurch die anweisungen funktionieren mit einem anderen user, der all rechte hat problemlos, nur nicht mit dem, der nur die create temporary table hat, was für mich bedeutet: das recht "create temporary table" != "select" auf die temporäre tabelle
lausbub Geschrieben 24. März 2010 Geschrieben 24. März 2010 ja dann braucht der user doch select und insert rechte...
Callam Geschrieben 24. März 2010 Autor Geschrieben 24. März 2010 (bearbeitet) Ja, genau das ist ja mein problem, wie stelle ich die rechte für temporäre tabellen ein, die bei anlegen des users noch garnicht existieren? um das ganze nochmal etwas auszuführen, was ich genau vorhabe... ich sitze hier an einer webanwendung, in der der administrator die möglichkeit eine query in ein formular einzutippen und zu speichern bei klick auf einen link wird dann das ergebnis der query als html tabelle ausgegeben um den admin zu entlasten sollen die user, die zumindest ein bisschen ahnung von sql haben selbst solche auswertungen anlegen können, allerdings mit der beschränkung, das nur von bestimmten (standerd)-tabellen gelesen werden kann hierfür will ich einen neuen db user anlegen, der nur begrenzte rechte hat der user, der die query erstellen darf, soll auch temporäre tabellen nutzen können, da diese in verschiedenen fällen schneller sind als joins daher braucht der user vollen zugriff (incl. ändern) auf temporäre tabellen und nur eingeschränkte auf standardtabellen, und genau das ist das ding, das ich keine unterscheidung zwischen temporär und nicht temporär hinbekomme Bearbeitet 24. März 2010 von Callam
Callam Geschrieben 24. März 2010 Autor Geschrieben 24. März 2010 oder anders gesagt: temporäre tabellen: create, drop, insert, alter, update, select und delete nichttemporäre tab: NUR select
lausbub Geschrieben 24. März 2010 Geschrieben 24. März 2010 ich sehe da allerdings keine andere möglichkeit als die recht global in der db zu vergeben. mysql unterstütz das soweit ich weiß nicht: MySQL Bugs: #21100: Permission model does not allow for a read only user with temporary tables oder du legst für die temp tabellen eine extra db an, dann dürfte der rest ja egal sein. das würde allerdings änderungen am quelltext der applikation vorraussetzen.
_n4p_ Geschrieben 24. März 2010 Geschrieben 24. März 2010 leider gibt es da so recht keine möglichkeit, allerdings ist ein patch der dieses verhalten ändern soll grad im review: MySQL Bugs: #27480: Extend CREATE TEMPORARY TABLES privilege to allow temp table operations
Callam Geschrieben 24. März 2010 Autor Geschrieben 24. März 2010 ok, das global die rechte setzen geht leider nicht, da er sonst z.b. alter oder drop auf die db anwenden könnte das mit der extra db für die temporären tabellen werde ich mal ausprobieren und schauen, ob die user da irgendwelchen schwachsinn mit anstellen können änderungen am quellcode der app sind eh noch geplant und der aufwand wär da nicht allzu groß
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden