Antworten auf deine Fragen:
Neues Thema erstellen

Welche MySQL-Userrechte?

lachender_engel

Aktives Mitglied

Hallo, Zusammen.

Ich tüftle schon seit Tagen an einer Lösung, bin mir jedoch nicht sicher.
Vielleicht hat damit jemand Erfahrung kann mit helfen?!

Es geht um die Rechte eines MySQL-Users.
Ziel ist es unter MySQL einen User anzulegen der KEINE globalen Rechte hat außer das, um Datenbanken anzulegen (CREATE DATABASE). Erst für die von dem User selber angelegten Datenbanken darf er volle Rechte haben.

Ich habe schon viele Kombinationen ausprobiert doch bisher es nicht hinbekommen, wenn der User global z.B. keine Tabellenrechte wie SELECT, UPDATE hat, er auch an seinen eigenen Tabellen diese Rechte nicht hat.

Ideal stelle ich mir vor, dass ein User nur das Recht CREATE hat um seine eigenen Datenbank anzulegen. Doch wie bekomme ich es dann hin, dass der User in den Datenbanken dann alles andere darf?

Danke vorab für Eure Hilfe!
 

lachender_engel

Aktives Mitglied

AW: Welche MySQL-Userrechte?

GRANT ALL ON db_name.*
Verstehe nicht wirklich, wie mir das helfen kann.

Mit GRANT lege ich Rechte fest, muss daüfr aber z.B. root sein, oder?
Noch mal: Ich lege einen User an, der nichts anderes dürfen soll als Datenbaken anlegen. Mit diesem User darf ich dann auch keine Rechte auf Datenbanken vergeben.
Ich muss also eine Default-Einstlelung haben. welche globalen Rechte der User haben muss um seine DB anzulegen und nur auf seine DB zugreifen darf.
 
K

kyle66

Guest

AW: Welche MySQL-Userrechte?

Ich hatte das so verstanden, dass der User in einer bestimmten Datenbank alle Rechte bekommen darf.

Was du suchst ist aber wohl eher
GRANT CREATE DATABASE ON *.* TO username@'%'

Gräße
kyle
 

lachender_engel

Aktives Mitglied

AW: Welche MySQL-Userrechte?

Ja, soweit bin ich. Damit erlaube ich 'nem User eine Datenbank zu erstellen.
Und nun?
Der User hat mit CREATE DATABASE eine DB erstellt. Doch hat er keine Rechte an der DB - zumindest bisher nicht, wie ich das getestet habe.
Ich frage mal anders: Wie kann sich der User selber Rechte nur für seine Datenbank geben?
 
K

kyle66

Guest

AW: Welche MySQL-Userrechte?

grant grant option on db_name.* to user_name@'%';

Dann kann der Benutzer selber Rechte vergeben
 

lachender_engel

Aktives Mitglied

AW: Welche MySQL-Userrechte?

Das geht so nicht denn, wenn ich den User anlege, kenne ich die Datenbank noch nicht die der User irgendwann mal anlgegen wird.
Gebe ich dem User global das Recht Rechte zu vergeben, kann es auch Unfug damit machen, oder?!
 
K

kyle66

Guest

AW: Welche MySQL-Userrechte?

Du legst erst den User an und gibst ihm das Recht Datenbanken anzulegen:
GRANT CREATE DATABASE ON *.* TO username@'%'

Sobald er eine Datenbank anlegt gibst du ihm die Rechte an der Datenbank:
grant grant option on db_name.* to user_name@'%';

fertig
 

lachender_engel

Aktives Mitglied

AW: Welche MySQL-Userrechte?

Leider nein, das geht eben nicht.
Das PHP-Skript richtet eine Vielzahl von MySQL-Datenbanken ein die ohne menschlichen Eingriff einsetzbar sein müssen.
 
K

kyle66

Guest

AW: Welche MySQL-Userrechte?

Die grants kann das php-Skript doch auch erledigen, da muss niemand eingreifen.
 

lachender_engel

Aktives Mitglied

AW: Welche MySQL-Userrechte?

Die Grants kann doch nicht jeder User machen, oder?!
Ok, dann komme ich eventuell weiter:
Der User, der die Datenbank anlegt und sich dann selber die Rechte vergibt braucht dann welche Globalen Rechte?
Ein globales Recht der Administration heißt "GRANT". Doch welches Recht benötigt der User um die Datenbank anzulegen? Ist das das Recht "CREATE" und "DROP" um Datenbanken anzulegen und zu löschen?
Wie kann ich verhindern, dass der User sich auch an Datenbanken Rechte vergibt, die er nicht erstellt hat?
 

Duddle

Posting-Frequenz: 14µHz

AW: Welche MySQL-Userrechte?

Ich habe mich gestern mal ein bisschen in die Problematik eingelesen und mein Fazit ist, dass das mit MySQL-eigenen Funktionen nicht möglich ist.

Die Rechte werden auf bestimmten Ebenen vergeben, zum Anlegen einer Datenbank muss ein Nutzer CREATE auf Ebene * besitzen. Es gibt aber keinen "Eigentümer" o.ä. von MySQL-Datenbanken, ergo müsste irgendein Mechanismus dem Nutzer für die neue Datenbank GRANT geben. Diesen Mechanismus suchst du.

Die offensichtlichen Ansätze sind:

  • MySQL vergibt bestimmte Rechte automatisch an den Ersteller der Datenbank: geht nicht, wie o.g. gibt es keinen Eigentümer
  • MySQL führt beim Erstellen der Datenbank einen nutzerdefinierten Prozess aus, um diese Rechte zu vergeben: geht nicht, da es keinen Trigger für das Erstellen von Datenbanken gibt
  • ein Nutzer mit entsprechenden Rechten gibt dem Nutzer die Rechte für die neue Datenbank: das muss ausserhalb von MySQL angewiesen werden

Nur die letztere Variante scheint realistisch umsetzbar zu sein. Der Nutzer darf dann keine direkten CREATE DATABASE-Befehle abschicken, sondern macht das über ein Interface, welches im Hintergrund automatisch die neu erstellte Datenbank mit den korrekten Rechten vergibt. Aber wie gesagt, das muss ausserhalb von MySQL erledigt werden.


Duddle
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.615
Beiträge
1.538.352
Mitglieder
67.526
Neuestes Mitglied
Winfriedtesmer
Oben