Klientas turi poreikį, daugiau nei 150 laukų lentelė, klientas reikalauja, kad skenavimo įmonės žmonės matytų tik kai kuriuos laukus, šį reikalavimą galima lengvai įgyvendinti rodiniu, klientas taip pat prašo, šiuos laukus, nuskaitymo įmonė gali keisti tik atskirus laukus, aš tikrai anksčiau nesu susidūręs su tokiu leidimų valdymo poreikiu stulpelio lygiu, padariau eksperimentą, jaučiuosi labai įdomu, įrašykite jį
Klientas turi vienąpaklausa, lentelėje su daugiau nei 150 laukų, klientas paprašė parodyti tik kai kuriuos laukus žmonėms, kurie nuskaitė įmonę, taipaklausaJį galima lengvai įgyvendinti su rodiniu, o klientas prašo, kad šie laukai, nuskaitymo įmonė galėtų keisti tik atskirus laukus, aš tikrai anksčiau nesu susidūręs su tokiu leidimų valdymo poreikiu stulpelio lygiu, padariau eksperimentą, jaučiuosi labai įdomiai, įrašykite jįBandymoprocesas. 1. Sukurkite bandymo lentelę ir įterpkite taško testo duomenis: SQL> sukurti lentelės testą (ID numeris, table_name varchar2 (50), savininkas varchar2(50),TABLESPACE_NAME varchar2(50)); Sukurta lentelė. SQL> įterpti į testą pasirinkti eilutę,table_name,savininkas, TABLESPACE_NAME nuo dba_tables; Sukurta 5490 eilučių. SQL> įsipareigojimas; Įsipareigojimas baigtas. 2. Sukurkite bandomąjį vartotoją ir suteikite pagrindinius leidimus: SQL> CONN / AS SYSDBA Prijungtas. SQL> sukurti vartotojo srautą, identifikuojamą srauto numatytųjų lentelės vartotojų; Vartotojas sukurtas. SQL> suteikti ryšį, išteklius srautui; Grantui pavyko. 3. Suteikite bandomiesiems naudotojams stulpelio lygio leidimus: SQL> conn auth/auth Prijungtas. SQL> suteikti naujinimą (ID) bandant srautui; Grantui pavyko. SQL> suteikti įterpti (table_name) bandymo srautui; Grantui pavyko. SQL> SQL> suteikti pasirinkti bandymo srautą; Grantui pavyko. 4. Užklausti stulpelio lygio teisių nustatymo informacijos: SQL> pasirinkite GRANTEE,OWNER,TABLE_NAME,COLUMN_NAME,GRANTOR,PRIVILEGE, SUTEIKIAMA iš user_col_privs; DOTACIJOS SAVININKAS TABLE_NAME COLUMN_NAME SUTEIKĖJO PRIVILEGIJA GRA ------- ----- ---------- ----------- ------- --------- --- SRAUTO AUTENTIFIKAVIMO TESTAS TABLE_NAME AUTENTIFIKAVIMAS ĮTERPTI NE AUT AUTH TEST ID AUTH INSERT NO AUT AUTH TEST ID AUTENTIFIKAVIMO NAUJINIMAS NR SRAUTO AUTENTIFIKAVIMO TESTO ID AUTENTIFIKAVIMO NAUJINIMAS NR 5. Prisijungimo testo vartotojas patikrina SELECT leidimą: SQL> conn srautas / srautas Prijungtas. SQL> pasirinkite * iš(pasirinkite * iš autentifikavimo.testo tvarka pagal 1), kur eilutė< =10; ID TABLE_NAME SAVININKO LENTELĖS VIETA ---------- -------------------- ---------- ---------- 1 ICOL$ SYS SISTEMA 2 IND$ SYS SISTEMA 3 COL$ SYS SISTEMA 4 CLU$ SYS SISTEMA 5 TAB$ SYS SISTEMA 6 LOB$ SYS SISTEMA 7 COLTYPE$ SYS SISTEMA 8 SUBCOLTYPE$ SYS SISTEMA 9 NTAB$ SYS SISTEMA 10 REFCON$ SYS SISTEMA Pasirinkta 10 eilučių. 6. Patikrinkite stulpelio lygio UPDATE teisių valdiklį: SQL> atnaujinkite auth.test set owner='STREAM', kur id =1; atnaujinti auth.test set owner='STREAM', kur id =1 * KLAIDA 1 eilutėje: ORA-01031: insufficient privileges Galima pastebėti, kad bandomosios lentelės lauko OWNER vertės negalima keisti, ataskaita ORA-01031: Nepakankamas leidimas, nes tai, kas išdėstyta aukščiau, suteikia bandomajam vartotojui leidimą keisti bandomosios lentelės ID lauką, galima modifikuoti ID lauką. SQL> atnaujinti auth.test set id=10, kur id=1; Atnaujinta 1 eilutė. SQL> atšaukimas; Atšaukimas baigtas. 7. Patikrinkite stulpelio lygio INSERT teisių valdiklį: SQL> įterpti į auth.test reikšmes(1,'stream','stream','users'); Įterpti į Auth.test reikšmes(1,'srautas','srautas','vartotojai') * KLAIDA 1 eilutėje: ORA-01031: insufficient privileges Kadangi tai, kas išdėstyta pirmiau, suteikia bandomajam vartotojui įterpimo teisę modifikuoti bandomosios lentelės TABLE_NAME lauką, galima įterpti TABLE_NAME lauką, bet tik tuo atveju, jei kiti laukai neturi NE TAM tikrų apribojimų. SQL> įterpti į auth.test(table_name) reikšmes ("srautas"); Sukurta 1 eilutė. SQL> atšaukimas; Atšaukimas baigtas.
|