eigenes Webhosting. Wollen eigene Datenbak erstellung verhindern, nur wie?

Tobbes

Mitglied
Tag

Unser projekt:
http://beta.ebytenet.com

wenn jetz ein User seine Datenbank aktiviert bekommt er eie Datebank allerdings kann er auf andere zugreifen und auch datenbank erstellen. Wie kann man es so einrichten das er nur auf seine zugreifen kann?

Bisherriger code

Code:
$mysql -> query('GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON `'.$database.'` . * TO \''.$user.'\'@\'localhost\' IDENTIFIED BY \''.$password.'\' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;'); <-- so mach ichs im Moment... aber "CREATE" erlaubt einem Benutzer, dass er Tabellen _und_ Datenbanken anlegen darf
 
Bei mir funktioniert Dein Query wie gewünscht.

Überprüfe doch mal die Inhalte Deiner Variablen.

Ich vermute mal, dass Du das schon getan hast, daher nenne doch mal Details zu Deiner Konfiguration, insbesondere der Version von MySQL.

Ich habe es unter Win2k mit MySQL 4.1.10a-nt getestet.

Möglicherweise hast Du den User auch vorher mit globalen Rechten angelegt oder einem anonymen User Rechte zugestanden.

Gruß hpvw
 
Hallo!

Ich vermute auch dass der User globale Rechte bekommen hat..... also Rechte auf die Datenbank "mysql".
Der Fehler dürfte also evtl. schon beim anlegen eines Users passieren.

Mit CREATE kann er nur dann Datenbanken anlegen, wenn ihm hierzu die Rechte zugewiesen wurden.

Ich mache es in 3 Schritten:
1. eine neue Datenbank wird angelegt.
2. ein neuer User wird angelegt.
3. dem User werden die Rechte zugewiesen.

Man könnte es zwar sicherlich auch in einem Schritt machen, jedoch habe ich so auch die Möglichkeit mehreren Usern gemeinsamen Zugriff auf ein und die selbe Datenbank zu ermöglichen.

Gruss Dr Dau
 
Zuletzt bearbeitet:
jau ich habe an folgenen code geacht, muss ich halt nur noch mit variablen verbessern.

Code:
GRANT USAGE ON * . * TO 'test'@'localhost' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;

CREATE DATABASE `db_test` ;

GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER ON `db\_test` . * TO 'test'@'localhost';


Aber ist das eigendlich nciht das gleiche wie mein erster?

hpvw hat gesagt.:
Bei mir funktioniert Dein Query wie gewünscht.

Überprüfe doch mal die Inhalte Deiner Variablen.

Ich vermute mal, dass Du das schon getan hast, daher nenne doch mal Details zu Deiner Konfiguration, insbesondere der Version von MySQL.

Ich habe es unter Win2k mit MySQL 4.1.10a-nt getestet.

Möglicherweise hast Du den User auch vorher mit globalen Rechten angelegt oder einem anonymen User Rechte zugestanden.

Gruß hpvw


Ist es dann denn auch der richtige effekt?also das er keine Globalen rechte kriegt?
 
Das zweite ist nicht das gleiche, wie Dein erster Post.

Er soll keine globalen Rechte, sondern nur spezifische, bekommen.

Noch zu dem Comment in Deinem ersten Code:
CREATE-Rechte auf datenbank.* erlaubt nicht das Erstellen von Datenbanken, sondern nur das Erstellen von Tabellen in dieser Datenbank. Er kann jedoch die angegebene Datenbank selbst erstellen.

Gruß hpvw
 
Eigentlich wäre Dein erster Code der richtige und zwar (neben dem Create-Database) als einziger.

Bei mir funktioniert es damit auch einwandfrei und der angelegte User kann weder auf andere Datenbanken zugreifen, noch andere Datenbanken sehen oder gar anlegen.

Gruß hpvw
 
Ich habe mal meinen Code ausgebuddelt und alles Überflüssige (Daten werden durch ein Formular übergeben) entfernt/angepasst.
Code:
mysql_query("CREATE DATABASE `datenbankname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;");
mysql_query("GRANT USAGE ON datenbankname.* TO 'username'@'localhost' IDENTIFIED BY 'userpasswort';");
mysql_query("GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON datenbankname.* TO 'username'@'localhost';");
Evtl. noch den Zeichensatz anpassen.
Zuerst die Datenbank erstellen, denn wie willst Du einen User einer Datenbank zuordnen, wenn diese noch garnicht existiert?! ;)
Dann den User anlegen, denn wo kein User, da auch keine Rechte. ;)
Und dann erst die Rechte vergeben.
 
so scheint doch net zu funken der letze code..

Bei mir local geht er aber aufm server anscheint nicht.

haben folgene Version:
4.1.11-Debian_4sarge2-log



MfG
 

Neue Beiträge

Zurück