ubuntuusers.de

MySQL und Userrechte

Status: Ungelöst | Ubuntu-Version: Ubuntu
Antworten |

mycket

Anmeldungsdatum:
26. Juni 2006

Beiträge: Zähle...

Hallo zusammen,

ich bin Anfänger in Sachen MySQL und habe 2 Fragen, bei denen ich nicht wirklich weiterkomme:

* Warum kann ein User A in eine von User B angelegte Datenbank und Tabelle schreiben (insert into...)? Das geht dann nicht, wenn root A das globale Recht INSERT entzieht.

> Wie kann ein User eine Datenbank und/oder Tabelle so anlegen, dass nur er schreiben und/oder lesen darf? * Warum kann ein User SHOW DATABASES ausführen, obwohl beim Anlegen des Users in PHPmyAdmin das entprechende Feld deselektiert ist (Alle Felder im Administrative-Block sind deselektiert)?
=⇒ Wie kann verhindert werden, dass sich ein User anzeigen lassen kann, welche Datenbanken auf dem Server liegen? Der User sollte den Namen der Datenbank, die er verwenden will schon kennen und eingeben müssen. Kann mir da jemand weiterhelfen?
mycket

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

mycket hat geschrieben:

* Warum kann ein User A in eine von User B angelegte Datenbank und Tabelle schreiben (insert into...)? Das geht dann nicht, wenn root A das globale Recht INSERT entzieht.

> Wie kann ein User eine Datenbank und/oder Tabelle so anlegen, dass nur er schreiben und/oder lesen darf?

Du kannst Rechte auf Datenbankbasis nur hinzufügen aber nicht dem User wieder entziehen. Für deinen Fall bedeutet das, dass du keinen Benutzer anlegen solltest, der globale INSERT-Berechtigungen hat. Stattdessen vergibst du die Rechte explizit auf die entsprechenden Datenbanken.

mycket hat geschrieben:

* Warum kann ein User SHOW DATABASES ausführen, obwohl beim Anlegen des Users in PHPmyAdmin das entprechende Feld deselektiert ist (Alle Felder im Administrative-Block sind deselektiert)?

> Wie kann verhindert werden, dass sich ein User anzeigen lassen kann, welche Datenbanken auf dem Server liegen? Der User sollte den Namen der Datenbank, die er verwenden will schon kennen und eingeben müssen.

Wenn ein Benutzer, der kein Recht auf SHOW DATABASES hat, dieses Statement ausführt, werden ihm lediglich die Datenbanken angezeigt, auf die er Rechte hat. Möchtest du nicht diesen Effekt haben, muss der MySQL-Server mit dem Schalter --skip-show-database gestartet werden.

Gruß
Christian

mycket

(Themenstarter)

Anmeldungsdatum:
26. Juni 2006

Beiträge: 22

Hallo xabbu,

danke für Deine Erklärung. WIeder was gelernt ☺
Dass ich keine Rechte entziehen kann wusste ich z.B. noch gar nicht.
Mein Idealfall wäre es, wenn ich einen User anlege, der nach belieben Datenbanken erstellen und mit diesen tun und lassen kann, was er will. Vom schreiben über löschen und verändern...
Nur von der Existenz der anderen DB soll er nichts wissen (deswegen kein SHOW DATABASES), und erst recht nicht verändern können.

Was ich nun umständlich finde ist, dass ich dann ja als root arbeiten müsste, um dem User die insert-Rechte an einer (von ihm erstellten) DB zuzuweisen. Das sollte MySQL für mich machen ☺

Antworten |