phpMyAdmin felhasználó csak a saját adatbázisát lássa?

Sziasztok!

phpMyAdmin-ban hogyan tudom azt megvalósítani, egyáltalán meg tudom-e azt valósítani, hogy a felhasználók csak az általuk létrehozott adatbázisokat lássák, és a mások által létrehozott adatbázisokról ne is tudjanak?

Hozzászólások

szerintem ez az alap, nekem mindegyik így működik

Ha jól értem a kérdést, akkor csak 1-2..x adatbázishoz rendeld a felhasználót és csak azt fogja látni. Aztán az általa "_valami" utótaggal létrehozott adatbázisokat látni fogja, de a többiek nem.

Nos tehát van mondjuk két felhasználó. Egyenlőre egyiknek sincs adatbázisa. Jogosultságaik: adatok, szerkezet összes jog, adminisztráció semmi jog. A két felhasználó Aladár és Géza.

Aladár belép saját hozzáférésével, és létrehoz magának egy aladár adatbázist.

Ezután belép Géza a saját felhasználónevével, és látja az aladár nevű adatbázist valamint törölni is tudja azt.

Én azt szeretném, ha Géza nemhogy törölni, de még látni se lássa, hogy létezik egy aladár nevű adatbázis, és ezt anélkül, hogy Aladárnak bármilyen jogosultságot állítania kellene. Tehát amit Aladár létrehoz alapból adatbázisokat, azt Géza ne lássa.

Jogosultságaik: adatok, szerkezet összes jog, adminisztráció semmi jog.

Ez a baj. Ne legyenek globális jogosultságaik.
Csak a saját adatbázisukra legyen joguk, és akkor nem is látják majd a többit.

Tehát létrehozod a delikvenst, majd nem adsz nekik plusz jogokat, csak a saját adatbázisára.

Ok, ha nem adok semmilyen globális jogot a felhasználónak, akkor csak az information_shema táblát látja, a másik felhasználó tábláját nem. Azonban ekkor nem tud adatbázist létrehozni, sőt a saját adatbázisában se nagyon tud mit csinálni. Én azt szeretném, hogy annyi jogosultsága maradjon a felhasználónak, hogy tudjon létrehozni magának adatbázist ha kell és az általa létrehozott adatbázisokat törölni is tudja. Azonban ha jól gondolom ezt így nem lehet megoldani, ugyanis amint adok egy globális jogosultságot, abban a pillanatban látja az összes adatbázist.

Azonban ekkor nem tud adatbázist létrehozni, sőt a saját adatbázisában se nagyon tud mit csinálni.

Ezért kell a neki szánt adatbázis(ok)ra jogot adni.
Ha az adatbázisára full jogot adsz, akkor létre is tudja magának hozni, le is tudja törölni.
A jog adásánál lehet %-ot használni, pl. 'pistike_%', és akkor bármilyen pistike_ kezdetű adatbázisra lesz neki joga. Nyilván ha '%' a név, akkor mindegyik adatbázisra lesz joga.

Az nem megy, hogy bármilyen, még nem létező adatbázist létrehozhasson, arra nőjön neki minden jog, de ha más hozta létre az adatbázist, akkor oda meg ne legyen joga. Illetve lehetne ilyen, de akkor arra kell valami létrehozó admin felületet csinálni, ahol a felület maga admin dba jogokkal bír, létrehozza az adatbázist, majd ad csak arra az adatbázisra jogokat a delikvensnek.


$cfg['Servers'][$i]['only_db']="foobar";

ekkor csak az az egy db fog megjelenni.

Amugy ertelemszeruen grantolassal kell ezt megoldani...

Alapvetően egy felhasználónak vagy globális jogokat adsz és akkor a szerver összes adatbázisához hozzáfét, vagy adatbázis/tábla szintű jogokat és akkor csak ahhoz.
Az adatbázis létrehozásához globális jog kell, olyat meg normális esetben amúgy is csak az kaphat, aki előtt nem titkoljuk a szerver komplett tartalmát.
Áthidaló megoldás lehet a fent már említett "userid_%" adatbázisokra adott grant jogosultság, ilyenkor csak ilyet tud magának létrehozni és csak ezeket látja.

Ha rootal lépnek be a felhasználók akkor mindent látni fognak, nem tudsz mit tenni. (bocs)

Na, a phpmyadmin nem egy elkalmazás ami lekezeli az oda belépő felhasználókat, hanem egy mondhatni sql utasításokat összeállító és az eredményet html-ben megjelenítő php-ban írt webhely, nem foglalkozik a felhasználókkal vagy a jogaikkal, kizárólag a mysql az ami alatta van, db user-el lépsz be, a db user jogait tudja csak feléd közvetíteni, vagyis amilyen joga a felhasználónak van azt látni is fogja.

Ha root-al létrehozol egy új db és hozzá tartozó usert, akkor alaposan próbálgasd végig az összes jogot, hogy mi mit is csinál, nincs túl sok de legalább látni fogod.

A lényeg, minden a mysql-ben van, minden jog és jogosultság, ez csak egy ablak rá.

Egy egyszerű módszer a Neked jó db létrehozására:

* SSH az adott szerverre.

* su, sudo hogy root joggal legyünk.

* belépünk a mysql konzolba. Ez kérni fogja a mysql root jelszót.
mysql -u root -p

* adatbázis létrehozása:
create database xxyy;

* adatbázis jogosultság és felhasználó beállítása:
GRANT ALL ON xxyy.* TO xxyy_db_felhasznalo@localhost IDENTIFIED BY "db_u_jelszo";

* a jogok élesítése:
flush privileges;

* Kilépés a mysql konzolból.
quit;

Sokkal egyszerűbb a phpmyadminnal, mert ugyanezt csinálja meg.

A problémám megoldódott, megcsináltam úgy, hogy a létrehoztam a felhasználóknak adatbázist, aztán majd ha kell új nekik, akkor létrehozom. Egyébként ez csak egy tesztelésre használt szerver 2 felhasználóval, úgyhogy nincs vele akkora baj, hogy ne tudnám én létrehozni az adatbázisokat és nekik, csak egyszerűbb lett volna, ha a felhasználók maguknak létrehozhatják.

Még ugyan ezt kellene megoldanom Postgre SQL-ben is phppgadmin felülettel. Egyenlőre próbálkozok vele, aztán lehet nyitok annak is egy ilyen topikot. Ott is létrehoztam az adatbázisokat és felhasználókat, de hiába állítok be jogosultságmegvonást, nem akar működni. Az egyik felhasználó módosíthatja a másik adatbázisát.

phpMyAdminból: http://img98.imageshack.us/img98/6171/phpmyadminnincsglobalis.png

Eredmény:

- A felhasználó létre tud hozni akármennyi abrakadabra_-val kezdődő adatbázist magának.
- A létrehozott adatbázist más felhasználó nem látja (a root kivételével).
- Más felhasználók által létrehozott adatbázisokat nem látja az abrakadabra felhasználó.

--
http://modellers.hu