24. März 201015 j 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?
24. März 201015 j 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 201015 j von lausbub
24. März 201015 j 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 201015 j von Callam
24. März 201015 j 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
24. März 201015 j 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'
24. März 201015 j hast du dich nach dem anlgen der tabelle von der db abgemeldet? die tabelle existiert nämlich nur solange bis du die session beendest
24. März 201015 j 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
24. März 201015 j 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 201015 j von Callam
24. März 201015 j oder anders gesagt: temporäre tabellen: create, drop, insert, alter, update, select und delete nichttemporäre tab: NUR select
24. März 201015 j 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.
24. März 201015 j 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
24. März 201015 j 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ß
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.