Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

GRANT und Benutzerverwaltung unter MySQL ?!

Empfohlene Antworten

Veröffentlicht

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

  • Autor

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

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

  • Autor

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

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

  • Autor
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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.