Kapli Skrevet 5. august 2008 Del Skrevet 5. august 2008 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
___ Skrevet 5. august 2008 Del Skrevet 5. august 2008 (endret) 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 5. august 2008 av wernie Lenke til kommentar
Manfred Skrevet 6. august 2008 Del Skrevet 6. august 2008 (endret) Jeg holder en knapp på mysql... Det er nesten alltid det når det ikke skrives noe. Noen mener tydeligvis at dette er den eneste databasemotoren som finnes. Endret 6. august 2008 av Manfred Lenke til kommentar
Kapli Skrevet 6. august 2008 Forfatter Del Skrevet 6. august 2008 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
BlueEAGLE Skrevet 6. august 2008 Del Skrevet 6. august 2008 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
Kapli Skrevet 6. august 2008 Forfatter Del Skrevet 6. august 2008 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
BlueEAGLE Skrevet 6. august 2008 Del Skrevet 6. august 2008 (endret) 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 6. august 2008 av BlueEAGLE Lenke til kommentar
Kapli Skrevet 6. august 2008 Forfatter Del Skrevet 6. august 2008 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå