Callam Geschrieben 24. März 2010 Teilen 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lausbub Geschrieben 24. März 2010 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Callam Geschrieben 24. März 2010 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lausbub Geschrieben 24. März 2010 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Callam Geschrieben 24. März 2010 Autor Teilen 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' Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lausbub Geschrieben 24. März 2010 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Callam Geschrieben 24. März 2010 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lausbub Geschrieben 24. März 2010 Teilen Geschrieben 24. März 2010 ja dann braucht der user doch select und insert rechte... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Callam Geschrieben 24. März 2010 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Callam Geschrieben 24. März 2010 Autor Teilen Geschrieben 24. März 2010 oder anders gesagt: temporäre tabellen: create, drop, insert, alter, update, select und delete nichttemporäre tab: NUR select Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lausbub Geschrieben 24. März 2010 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 24. März 2010 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Callam Geschrieben 24. März 2010 Autor Teilen 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ß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.