Gå til innhold

Lage bruker med tilgang til å opprette database men ikke se de andre


Anbefalte innlegg

Klarte ikke fikse en ordentlig tittel, men..

Det jeg ønsker å oppnå er at brukeren jeg har laget nå har jeg gitt full privileges til en database, men jeg ønsker å gi han muligheten til å lage flere databaser, men fortsatt ikke se de andre som er mine, sånn at databasene han lager blir NAVN_nydatabase på en måte hvis dere forstår.

Jeg vet dette er mulig, men ikke hvordan :s

 

Takker :)

Lenke til kommentar
Videoannonse
Annonse
Klarte ikke fikse en ordentlig tittel, men..

Det jeg ønsker å oppnå er at brukeren jeg har laget nå har jeg gitt full privileges til en database, men jeg ønsker å gi han muligheten til å lage flere databaser, men fortsatt ikke se de andre som er mine, sånn at databasene han lager blir NAVN_nydatabase på en måte hvis dere forstår.

Jeg vet dette er mulig, men ikke hvordan :s

 

Takker :)

 

Du kunne jo i det minste fortelle hvilken database det var snakk om. Vi er ikke tankelesere.

 

Werner

Endret av wernie
Lenke til kommentar

Ah, sorry my bad hehe jeg tenkte ikke over det, men ja mysql, jeg vet det finnes postgre og oracle og sånt så skulle tenkt over det før jeg skrev ;P

Men ja, jeg vil at brukeren skal kunne lage sine egne databaser og se de han selv har laget, men ikke noen andre. En annen ting, jeg merket at når jeg laget brukeren med grant all on NAME så viser den også information_scheme eller noe, noen måte å ikke vise den? Det er vel egentlig ikke så farlig..

 

Takker

Lenke til kommentar

Følgende gjelder MySQL:

 

For å gi en bruker tilgang til å lage databaser så må du

GRANT CREATE ON *.* TO 'brukernavn'@'localhost_eller_annet_tjenernavn' IDENTIFIED BY 'passord';
FLUSH PRIVILEGES;

Dette vil tilordne en bruker med tilgang til database tjeneren fra den lokale maskinen eller en annen tjener (% for alle tjenere hvis jeg ikke husker feil) og denne brukeren kan lage nye databaser uten å ha rett til å velge fra andre sine databaser.

 

For å oppdatere en gjeldende bruker så må du spesifisere det samme brukernavnet, tjenernavnet og passordet som brukeren har nå.

Lenke til kommentar

Men da har han jo ikke privileges til noen av de databasene han lager og han ser alle de andre.

Jeg vil på en måte at han skal kun se sine egne databaser og gjøre hva han vil med de, hvis mulig også at alle nye databaser han lager har har en prefix lik navnet på brukeren.

Lenke til kommentar

Du har rett. Jeg testet bare om man kunne lage en testtabell inni testdatabasen. Jeg testet ikke insert og select på den tabellen.

 

Hmm.. Da ser det ut som at du må ha et skript hvor en bruker med GRANT-tilgang lager databasen for brukeren og GRANTer alle privilegiene på den databasen til brukeren.

 

Dette kan gjøres med noe så enkelt som

 

$username = $_SESSION['verified_username'];
$databasename = sanity_check($_POST['database']);

mysql_connect($master_user, $host, $master_password);
mysql_create_db($databasename);
mysql_query("GRANT ALL ON $databasename.* TO '$username'@'localhost' IDENTIFIED BY '$userdbpassword'");

 

Her mangler selvfølgelig $master_user, $master_password verdier. Hvordan du henter disse er opp til deg. Funksjonen sanity_check() må blandt annet sjekke for ulovlige tegn i den forespurte databasen og sjekke at denne databasen ikke allerede eksisterer.

 

Edit: Det er vanlig at brukerdefinerte databaser får en prefiks som ofte er kontonavnet. Så når testbruker ønsker å opprette databasen testdatabase blir den ofte hetende testbruker_testdatabase

Endret av BlueEAGLE
Lenke til kommentar

Takk for hjelpen, fikk det til med

GRANT ALL ON `DBNAME%`.* TO NAME IDENTIFIED BY 'PASSWD';

 

Da fikk brukeren laget sin egen database og lage flere hvis han gjordet navnet om til NavnetPåForrigeDatabase_NyDB, han har alle privileges på de og kan ikke se noe annet en det han selv lager. Akkurat det jeg trengte ^^

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...