Zum Inhalt springen

GRANT und Benutzerverwaltung unter MySQL ?!


Flori

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...