PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : user mit Zugriff auf einzelne DB?



DerHannesGR
18.08.2006, 17:50
hallo zusammen,

ich habe folgendes vor:

einen neuen User erstellen der nur Zugriff auf eine bestimmte DB hat. Also nicht auf alle auf dem mySQL Server befindlichen Datenbanken. Sämtliche anderen DBs sollen für den User komplett unsichtbar sein.

Einen neuen User anlegen is ja nich der hit, aber wie weise ich dem User eine oder mehrere DB(s) zu ?

Ich nutze einen eigenen Server mit mySQL Dienst, hab also alle Möglichkeiten.

Danke vorab, Hannes

grey
18.08.2006, 19:06
ich würde es in zwei Schritten machen, aber wahrscheinlich geht es auch mit einem ... ;)
grey@mod-001:~$ mysql -h localhost -u db-main-admin -p mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 943 to server version: 4.0.24_Debian-10sarge2-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> GRANT ALL PRIVILEGES ON DB-NAME . * TO 'USER-NAME'@'localhost' IDENTIFIED BY 'USER-PWD' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
grey@mod-001:~$

//edit: Es ging doch noch schöner ... ;)

DerHannesGR
19.08.2006, 13:44
funktioniert wunderbar - danke schonmal.

nur wenn ich mich mit dem neuen User über phpmyadmin einlogge, hat dieser die Möglichkeit Rechte zu ändern. Also PW von Usern ändern und neue User anlegen. Wie kan ich dies noch unterbinden?

grey
19.08.2006, 14:04
funktioniert wunderbar - danke schonmal.

nur wenn ich mich mit dem neuen User über phpmyadmin einlogge, hat dieser die Möglichkeit Rechte zu ändern. Also PW von Usern ändern und neue User anlegen. Wie kan ich dies noch unterbinden?
Pfff ... bei mir geht das nicht ...


mysql> GRANT ALL PRIVILEGES ON test . * TO 'test_04'@'localhost' IDENTIFIED BY 'test_04' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
Query OK, 0 rows affected (0.00 sec)Wenn ich mich dann als User test_04 bei phpmyadmin anmelde, wird diesem User nur die DB testangezeigt. Wenn ich den mysql-Client nutze schaut es so aus:
grey@mod-001:~$ mysql -h localhost -u test_04 -p mysql
Enter password:
ERROR 1044: Access denied for user: 'test_04@localhost' to database 'mysql'
grey@mod-001:~$Da du deinem User eigentlich nur die Rechte für eine DB gegeben hast, sollte er beim Versuch, eine andere zu nutzen, scheitern.

danielgoehl
19.08.2006, 14:15
Also für infos zu der GRANT funktion schaust du hier: http://dev.mysql.com/doc/refman/5.0/en/grant.html

Demnach sollte sowas wie

REVOKE CREATE USER ON table FROM user
funktionieren!

Gruß Daniel