# PHPMyAdmin nur auf eine Datenbank



## Mway-Tuning (1. April 2006)

Hallo

vielleicht kann mir hier jemand helfen. Ich betreibe eine kleine Community und will nun meinem Co-Admin auch zugriff auf eine meiner Datenbanken zugriff geben. Wenn ich ihm aber über PhpMyadmin zugriff gewähre kann er auch auf die restlichen Datenbanken zugreifen.

Gibt es da vielleicht eine Möglichkeit nur eine Datenbank freizugeben ?


----------



## elmyth (2. April 2006)

In der config gibt es eine Option die only_db oder so ähnlich heißt. Dort kannst du als Wert die entsprechende Datenbank angeben.


----------



## Mway-Tuning (2. April 2006)

das bedeutet ich müsste phpmyadmin 2 mal installieren eimal für mich und einmal für ihn ?

Oder geht das über eine Arbeitsfläche und er hat nur andere Zugangsdaten ?


----------



## elmyth (2. April 2006)

Afaik braucht man es dazu zwei mal. Aber "installieren" ... du musst ja bloß einmal den Ordner kopieren und die config kurz anpassen, ggf. noch die .htaccess. Bei phpMyAdmin ist es ja nicht möglich sich einzuloggen und somit mehrere User zu verwalten.


----------



## Mway-Tuning (2. April 2006)

Jetzt nochmal für den Anfänger hab sowas in der richtung noch nie gemacht.

Kann mir bitte jemand kurz zusammen fassen was ich zu tun habe ?


----------



## Dr Dau (2. April 2006)

Hallo!

Gehe ich recht in der Annahme dass Du nur Webspace mit einem MySQL User hast?
In dem Fall wirst Du wohl kein Zugriff als "root" auf MySQL haben.
Dieser vergibt normalerweise die Zugriffsrechte auf die Datenbanken.
Dein CoAdmin ist sicherlich "nur" Mitglied Deiner Community und kein MySQL User?
Dann bräuchte er eigentlich Dein MySQL Usernamen und Passwort um auf die Datenbank zugreifen zu können.
Damit könnte er dann allerdings mit Deiner gesammten Datenbank machen was er will.

Um dieses zu verhindern/einzuschränken, würde ich folgendes vorschlagen:

Du legst 2 Verzeichnise für phpMyAdmin an (z.b. "admin" für Dich und "coadmin" für Deinen CoAdmin).
In jedes dieser Verzeichnise legst Du eine Kopie von phpMyAdmin ab.
Im Verzeichnis "admin" bearbeitest Du die config.inc.php so:

```
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'dein_mysql_benutzername';
$cfg['Servers'][$i]['password'] = 'dein_mysql_passwort';
$cfg['Servers'][$i]['only_db'] = '';
```
Im Verzeichnis "coadmin" bearbeitest Du die config.inc.php so:

```
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'dein_mysql_benutzername';
$cfg['Servers'][$i]['password'] = 'dein_mysql_passwort';
$cfg['Servers'][$i]['only_db'] = 'datenbank_auf_die_der_coadmin_zugriff_haben_soll';
```
Soll der CoAdmin Zugriff auf mehrere Datenbanken bekommen, änderst Du die letzte Zeile so:

```
$cfg['Servers'][$i]['only_db'] = array('datenbank_auf_die_der_coadmin_zugriff_haben_soll', 'andere_datenbank_auf_die_der_coadmin_zugriff_haben_soll');
```
So hat der CoAdmin zwar vollen Zugriff auf die Datenbank, aber halt nur auf die, die in der config.inc.php angegeben wurde.

Nun noch ein Zugriffsschutz mittels einer .htaccess auf die Verzeichnise setzen (damit nur ein ausgesuchter Personenkreis Zugriff auf die Verzeichnise hat).
Name und Passwort für die .htaccess sind nicht von MySQL abhängig, sind also frei wählbar.
So kannst Du auch evtl. weiteren CoAdmin's Zugriff auf die gleiche Datenbank geben.
Bei Bedarf sogar mit eigenem Namen und Passwort, welches auch in der Passwortdatei (.htpasswd) der .htaccess gespeichert wird.

Ein kleines aber feines Freeware-Programm zum erstellen/verwalten der .htpasswd unter Windows findest Du hier (Encode UNIX Password).
Dort ist auch eine Beispiel .htaccess enthalten, welche noch angepasst werden muss.
Mehr Infos zum Zugriffsschutz mittels .htaccess/.htpasswd findest Du auch hier im Forum über die Suchfunktion (Beiträge gibt es mehr als genug dazu).

Eine Beschränkung auf bestimmte MySQL Tabellen ist meines Wissens nach so jedoch nicht möglich.
In dem Fall wirst Du dir wohl ein eigenes Webinterface in PHP schreiben müssen.

Gruss Dr Dau


----------



## Matthias Reitinger (2. April 2006)

Dr Dau hat gesagt.:
			
		

> So hat der CoAdmin zwar vollen Zugriff auf die Datenbank, aber halt nur auf die, die in der config.inc.php angegeben wurde.


Die Direktive only_db bezieht sich nur auf die Datenbanken, die im linken Frame angezeigt werden. Zugreifen kann man trotz allem auf alle Datenbanken, auf die auch der jeweilige MySQL-Benutzer zugreifen kann.


----------



## Dr Dau (3. April 2006)

Matthias Reitinger hat gesagt.:
			
		

> Die Direktive only_db bezieht sich nur auf die Datenbanken, die im linken Frame angezeigt werden.


Stimmt..... und wenn ich im rechtem Frame auf "Datenbanken" klicke, werden dort aber auch nur die Datenbanken angezeigt wie sie bei _only_db_ eingetragen sind.





			
				Matthias Reitinger hat gesagt.:
			
		

> Zugreifen kann man trotz allem auf alle Datenbanken, auf die auch der jeweilige MySQL-Benutzer zugreifen kann.


Ups! :suspekt: 
Ich hätte mal gleich mit einer .htaccess testen sollen..... und nicht bloss mit _['auth_type'] = 'http'._ :-( 
Dieses funktioniert aber nur, wenn der CoAdmin auch als MySQL Benutzer angelegt wurde (ist wahrscheinlich nicht der Fall).

Bleibt wohl doch nur der Weg über ein eigenes Webinterface..... je nach eingelogtem User stehen bestimmte Funktionen zur Verfügung (z.b. Einträge aus einer Datenbanktabelle löschen/bearbeiten) oder auch nicht.
Halt so wie bei einer Foren-Software.
Dieses dürfte dann aber wohl eher ins PHP Forum gehören.


----------

