Flori Geschrieben 10. November 2002 Geschrieben 10. November 2002 Hallo, spät am Sonntag abend auch nochmal mit ner Frage zu MySQL. Es geht um die Benutzerverwaltung und Rechtevergabe mit GRANT : habe mit dem root-User meinem User "paul" zunächst die Rechte für create und insert gegeben. Dann hab ich mich von nem anderen Rechner mit dem User "paul" angemeldet - funzte alles wunderbar, bei select kam "zugriff verweigert". Dann hab ich mich wieder dem anderen Rechner zugewandt und dort noch das Recht für "Select" für Paul hinzugefügt. Hab dann auch mit "mysqladmin .... reload" bzw. auch mit "mysqladmin .... refresh" versucht die Benutzertabellen zu aktualisieren. Aber User "Paul" kann erst dann das "Select" ausführen, wenn er sich einmal neu "connected" hat. Frage : Ist das so der einzige Weg, oder gibt es noch ne andere Möglichkeit, daß man die GRANT-Rechte updaten kann WÄHREND auf nem anderen Rechner der User eingeloggt ist ??! (Hab auch schon ein "flush privileges" probiert - aber auch nix ! ) Wäre schön, wenn mich da jemand näher drüber "instruieren" könnte ! Danke wieder vorab ! Flori Zitieren
robotto7831a Geschrieben 11. November 2002 Geschrieben 11. November 2002 Hallo, laut Deinen Angaben hast Du alles richtig gemacht. In welchen Tabellen hast Du die Rechte gesetzt? DB oder User? Frank Zitieren
Flori Geschrieben 11. November 2002 Autor Geschrieben 11. November 2002 Das bislang soweit alles richtig zu sein scheint, fühlt sich für mich als "mySQL-Admin-Neuling" schon gut an Also gesetzt hatte ich die Rechte in der Form : GRANT create,insert,select ON <dbname>.* TO paul@client; Nach meinem bisherigen (!) Verständnis müßte das doch dann db-bezogen sein, oder ?! :confused: Also wie gesagt, erst wenn der User nochmal ein "connect" abgesetzt hat, scheinen die Rechte zu "wirken. Entziehe ich zB. wieder das SELECT, dann kann der User trotzdem noch solange in den DB-Tabellen selecten bis er das neue "connect" vom mysql-Client aus gesetzt hat : mysql > CONNECT (<-- so sähe das dann aus) Sollten doch aber dann "direkt" wirken, wenn man die Rechte ändert , oder ?! Flori Zitieren
robotto7831a Geschrieben 11. November 2002 Geschrieben 11. November 2002 Ob sich die Rechteänderung direkt auswirkt, weiß ich nicht. Aber wie es bei Dir aussieht, ist dem nicht so. Ich mache das immer wie folgt mit den Rechten. Ich der Tabelle User wird der User eingetragen mit keinen Rechten. In der Tabelle DB wird der User mit der Datenbank eingetragen und die Rechte die er hat. Mit GRANT habe ich noch nicht gearbeitet, da meine Zielvorstellung mit der Tabele User und DB erreicht wurde. FRank Zitieren
Flori Geschrieben 12. November 2002 Autor Geschrieben 12. November 2002 Hallo Frank, hab mir gerade nochmal die Tabellen "user" und "db" in der DB "mysql" angeschaut. Scheinbar trägt der GRANT-Befehl genauso die vergebenen Rechte in die Tabelle "db" ein, so wie du es per Hand mit nem insert machst. In der Tabelle "db" stehen also die Werte für "select_priv", "create_priv" und "insert_priv" genauso drin wie ich sie per GRANT vergeben hatte. Habe jetzt mal die Werte nicht über GRANT geändert, sondern ebenfalls per UPDATE in der Tabelle "db" geändert. ABER : es bleibt immer noch dabei : WÄHREND der User "paul" eingeloggt ist (via mysql.exe) findet keine Rechte-Aktualisierung statt !!! Erst wenn der Befehl "Connect" abgesetzt wird, kann zb. das neue Recht auch genutzt werden ?!! Anders gefragt : was muß ich machen, damit die Rechteänderung SOFORT wirksam werden kann, WÄHREND der user an einem anderen Terminal eine Session auf dem MySQL-Datenbankserver hat ?!?! :confused: (Hatte mich NACH dem Update der Tabelle "db" aus der DAtenbank "mysql" ausgeloggt und dann mit dem "mysqladmin -u root -h <serververbindung> reload" die Tabellen neu eingelesen. NACHTRAG : auch ein "flush-privileges" oder ein "refresh" über die mysqladmin.exe bringt nix ein. Erst wieder, wenn ein "Connect" vom User absetzt wird, kommt es zur Rechte-Anpassung. Scheint anders nicht zu funktioniern ) Oder geht das einfach nicht anders ? Oder lautet der Befehl doch anders, damit die Änderung möglichst schnell wirken ?! Wie gehst du vor, nachdem du deine Rechte in der Tabelle "db" geändert hast ?!! Wäre schön, wenn Du da nochmal drauf eingehen könntest ! Danke schon mal für die bisherigen Antworten ! Flori Zitieren
Jaraz Geschrieben 12. November 2002 Geschrieben 12. November 2002 Hi, dass muss auch alles so sein. Ansonsten müsste ja vor jedem bearbeiteten Statement in den Tabellen nach den Rechten geschaut werden. Ich schätze mal, du musst den Server neu starten, um die bestehenden Connections zu beenden. Gruß Jaraz Zitieren
robotto7831a Geschrieben 13. November 2002 Geschrieben 13. November 2002 Nachdem ich Rechte geändert habe, mache ich ein reload. Frank Zitieren
Flori Geschrieben 13. November 2002 Autor Geschrieben 13. November 2002 Originally posted by Jaraz Hi, dass muss auch alles so sein. Ansonsten müsste ja vor jedem bearbeiteten Statement in den Tabellen nach den Rechten geschaut werden. Ich schätze mal, du musst den Server neu starten, um die bestehenden Connections zu beenden. Gruß Jaraz Danke Jaraz. Daß hatte ich mir ja eben letztlich genau gedacht, daß dem so nciht beizukommen ist. Hatte ja eigentlich wirklich alle Möglichkeiten abgeklopft und mehrfach getestet. Meine Idee bestand eben darin, daß man die Möglichkeit hätte bzw. mySQL den Weg ginge, daß eben mit jeder Anfrage ein Blick in die entsprechenden Rechte-Tabellen geworfen werden könnte. Aber mir leuchtet auf der anderen Seite auch ein, daß es natürlich deutlich zu Lasten von Performance gehen würde, vor allem wenn man mehrere tausend Datensätze abfragen muß bzw. komplexe Selects ausführen würde. Schade, daß es so nicht zu funktionieren scheint, aber ich werd dann auch so mit meinen Rechten klarkommen. Flori Zitieren
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.