PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [P]PHP-Script gibt dem MySQL Benutzer nicht die richtigen rechte.



AVU4m9
12.05.08, 21:42
Hallo!
Folgendes PHP-Script benutze ich für das Anlegen von einem MySQL-Benutzer.



$sql = 'CREATE USER '.$name.'@localhost IDENTIFIED BY \''.$passwort.'\'';
mysql_query($sql);

$sql = 'GRANT SELECT, INSERT, UPDATE, DELETE, DROP ON `'.$name.'`.* TO '.$name.'@localhost IDENTIFIED BY \''.$passwort.'\' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0';
mysql_query($sql);

$sql = 'CREATE DATABASE `'.$name.'`';
mysql_query($sql);

$sql = 'GRANT SELECT, INSERT, UPDATE, DELETE, DROP ON `'.$name.'`.* TO \''.$name.'\'@localhost';
mysql_query($sql);

$sql = 'REVOKE SHOW DATABASES ON *.* FROM \''.$name.'\'@localhost';
mysql_query($sql);


Ob wohl ich dem Benutzer und der Datenbank rechte zuteile, werden die Rechte nicht übernommen.

Ich habe keine Ahnung woran es liegen könnte. Hoffe ihr könnt mir helfen.

MfG
AVU4m9

P.S.: Ich hoffe das ist auch das richtige Forum??? Habe es ausgewählt, weil es ja mit einem SQL-Server zu tun hat.

UzumakiNaruto
12.05.08, 22:14
ich kann dir nur einen tipp geben wie du vllt zu einer erkenntnis kommen könntest, da ich mich mit der rechtevergabe bei sql nicht so auskenne.

hast du schoneinmal dein vorhanden über phpmyadmin "zusammengeklickt"? du bekommst da ja auch den sql code angezeigt, für jede aktion die du dort ausführst. vllt fällt dir dabei etwas auf was dir hier fehlt.

manchmal hilft es auch, den sql-query auf dem browser auszugeben, vllt sind deine variablen ja nicht richtig gefüllt.

gruß
uzu

AVU4m9
12.05.08, 22:31
Ok, Vielen Dank.

Ich werde es mal probieren.

€dit:
Sooo....
Ich hab nun alles weitgehend hin bekommen.
Nun wollte ich es gleich mal testen und habe versucht ein WBBlite2 zu installieren.
Da man Tabellen mit dem gleichen Befehl wie Datenbanken erstellt, habe ich nun das nächste Problem.

Der Benutzer soll nur Tabellen erstellen können aber keine Datenbanken.
Hab mich nun schon Dumm&Dusselig bei Tante Google gesucht.

Wäre cool wenn ihr mir helfen könnten.

MfG
AVU4m9

UzumakiNaruto
13.05.08, 15:00
über phpmyadmin kann man dieses ungefähr so erledigen:

benutzer anlegen OHNE rechte
dann wählst du unter "Datenbankspezifische Rechte" die datenbank aus und gibst ihm die rechte die erhaben darf.

die datenbanken musst dan nentweder DU für ihn anlegen .. oder der benutzer kann dieses über ein eigenes admin interface erledigen .. da muss aber direkt nach dem anlegen der db auch die rechte schon vergeben werden ;-)

gruß
uzu

marce
13.05.08, 15:06
Ich habe keine Ahnung woran es liegen könnte. Hoffe ihr könnt mir helfen.
Machst Du hinterher eigentlich auch ein flush privileges?

AVU4m9
13.05.08, 15:16
Vielen Dank für die Hilfestellung!

@Marce, Joa. Mit und ohne bekomme ich das selbe Resultat.
@uzu ok. Hier ist das "neue" Skript. Klappt leider immer noch nicht. Der Benutzer wird zwar mit den richtigen Rechten erstellt, er kann aber weiterhin munter Datenbanken erstellen.



$sql = 'CREATE USER \''.$name.'\'@\'localhost\' IDENTIFIED BY \''.$passwort.'\'';
mysql_query($sql) or die(mysql_error());

$sql = 'GRANT USAGE ON *.* TO \''.$name.'\'@\'localhost\' IDENTIFIED BY \''.$passwort.'\'';
mysql_query($sql);

$sql = 'CREATE DATABASE `'.$name.'`';
mysql_query($sql) or die(mysql_error());

$sql = 'GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, CREATE TEMPORARY TABLES ON `'.$name.'`.* TO \''.$name.'\'@\'localhost\'';
mysql_query($sql);

$sql = 'FLUSH PRIVILEGES';
mysql_query($sql) or die('böaaa');


edit:
Hier ist noch ein Screen von einem Ausschnitt aus PMA.
http://www.loaditup.de/files/226632.png

UzumakiNaruto
13.05.08, 17:18
CREATE USER test@localhost IDENTIFIED BY 'test';
GRANT USAGE ON *.* TO test@localhost IDENTIFIED BY 'test';
CREATE DATABASE test;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, CREATE TEMPORARY TABLES ON test.* TO test@localhost;
FLUSH PRIVILEGES;


das habe ich eben mal bei mir ausgeführt .. direkt in phpmyadmin rein .. danach habe ich mich als test an der datenbank angemeldet und ich hatte KEINE rechte eine datenbank anzulegen ... vllt hast du das vergessen und warst weiterhin als root angemeldet ;-) :-D