Avatar billede zorci Nybegynder
09. marts 2003 - 23:36 Der er 7 kommentarer

Forskellige rettigheder på databaseniveau og tabelniveau

Puha jeg har siddet og rodet med dette. Altså...

Jeg har en bruger "henning " som skal have adgang til databasen "mr_base". I mr_base skal henning have adgang til alt, det vil sige oprette, slette og modificere tabeller som det passer ham. Dog (og her kommer det spændende) må han ikke kunne andet end se tabellerne tb_5 og tb_6. Disse tabeller skal med andre ord altid findes i databasen uagtet hvad henning ellers foretager sig.

Hvordan gøres dette?

---

Jeg har naturligvis selv forsøgt. Og jeg har gjort følgende:
###
GRANT alter, create, delete, drop, index, insert, select, update on mr_base.* to henning@localhost identified by '123';

GRANT SELECT on mr_base.tb_5 to henning@localhost identified by '123';

GRANT SELECT on mr_base.tb_6 to henning@localhost identified by '123';
###
De to sidste burde vel overskrive rettighederne sat på databasen, men rettighederne skrevet til de 2 tabeller. Ikke?
Desværre kan Henning stadig slette tb_5 og tb_6, hvilket må have noget at gøre med, at han har rettigheder til hele databasen.

Hvad Søren kan jeg gøre?
Avatar billede gistybit Nybegynder
10. marts 2003 - 10:44 #1
uden at have testet det ville jeg gøre følgende:

GRANT * on mr_base.tb_5 to henning@localhost identified by '123';
GRANT * on mr_base.tb_6 to henning@localhost identified by '123';

Så har han adgang til at gøre alt, men kun med de to tabeller. Var det det du ville?
Avatar billede zorci Nybegynder
10. marts 2003 - 10:48 #2
Nej det var det ikke.

Han skal kunne alt med den database. Create tables, Drop tables etc. Men de 2 tabeller må han ikke ændre ved. De skal altid eksistere i databasen.

Så det er vel egetlig det modsatte af det du siger. :o)
Avatar billede gistybit Nybegynder
10. marts 2003 - 11:04 #3
ja sorry læste helt forkert :o)

hvad så med:
GRANT alter, create, delete, drop, index, insert, select, update on mr_base.* to henning@localhost identified by '123';
REVOKE alter, create, delete, drop, index, insert, select, update on mr_base.tb_5 to henning@localhost identified by '123';
REVOKE alter, create, delete, drop, index, insert, select, update on mr_base.tb_5 to henning@localhost identified by '123';
GRANT SELECT on mr_base.tb_5 to henning@localhost identified by '123';
GRANT SELECT on mr_base.tb_6 to henning@localhost identified by '123';

Det er sådan lidt omvendt at revoke efter at have granted, men det skulle da virke :o)
Avatar billede gistybit Nybegynder
10. marts 2003 - 11:04 #4
tb_5 i anden revoke skal selvfølgelig skiftes ud med tb_6
Avatar billede zorci Nybegynder
10. marts 2003 - 11:09 #5
Ja, godt forsøg. Men det har jeg også prøvet. Når jeg når til den første REVOKE siger den at der ikke findes nogen GRANTS som den kan fjerne. Idet der ikke er sat nogen på de pågældende tabeller, men i stedet på hele databasen.

Kan det være fordi jeg skal genstarte databasen efter disse rettighedændringer? Så vidt jeg ved genloader MySQL selv rettighederne til memory når der sker ændringer, således at ændringerne er aktive med det samme.
Avatar billede gistybit Nybegynder
10. marts 2003 - 11:25 #6
jaeh... så ved jeg det ikke...

men det er rigtigt at GRANT ændringer er aktive med det samme :o)
Avatar billede zorci Nybegynder
10. marts 2003 - 11:27 #7
Ok. Men tak fordi du forsøgte. Håber en anden kan svare på spørgsmålet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester