Czy ktoś może mi doradzić, jak utworzyć użytkownika w Oracle 11g i przyznać temu użytkownikowi tylko możliwość wykonywania tylko jednej określonej procedury składowanej i tabel w tej procedurze.
Nie bardzo wiem, jak to zrobić!
oracle
oracle11g
access-control
Andy5
źródło
źródło
CONNECT
rola ma jednak znacznie więcej uprawnień, niż sugeruje nazwa. ZamiastCREATE SESSION
tego wolałbym przyznać .Wykonaj poniższe kroki, aby utworzyć użytkownika w Oracle.
- Połącz się jako użytkownik systemu
- Utwórz zapytanie użytkownika
CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>;
- Zapewnij role
GRANT CONNECT,RESOURCE,DBA TO <USER NAME>;
- Zapewnij przywileje
GRANT CREATE SESSION, GRANT ANY PRIVILEGE TO <USER NAME>; GRANT UNLIMITED TABLESPACE TO <USER NAME>;
- Zapewnij dostęp do tabel.
GRANT SELECT,UPDATE,INSERT ON <TABLE NAME> TO <USER NAME>;
źródło
CONNECT,RESOURCE,DBA
„Role te są zapewniane w celu zapewnienia zgodności z poprzednimi wersjami bazy danych Oracle Database ... Firma Oracle zaleca zaprojektowanie własnych ról w celu zapewnienia bezpieczeństwa bazy danych, a nie poleganie na nich. Role te mogą nie zostać utworzone automatycznie w przyszłych wersjach Oracle Database”.Dokumentacja Oracle jest kompleksowa, dostępna online i bezpłatna. Powinieneś nauczyć się go używać. Składnię CREATE USER znajdziesz tutaj, a GRANT tutaj ,
Aby połączyć się z bazą danych musimy nadać użytkownikowi uprawnienie CREATE SESSION .
Aby zezwolić na nowe prawa użytkownika w procedurze składowanej, musimy przyznać uprawnienie EXECUTE. Koncesjodawcą musi być jeden z tych podmiotów:
Należy zauważyć, że normalnie nie musielibyśmy nadawać praw do obiektów używanych przez procedurę składowaną, aby móc z niej korzystać. Domyślnym uprawnieniem jest to, że wykonujemy procedurę z takimi samymi prawami, jak właściciel procedury i niejako dziedziczymy ich prawa podczas wykonywania procedury. Jest to objęte klauzulą AUTHID. Wartość domyślna to definer (tj. Właściciel procedury). Tylko jeśli AUTHID jest ustawiony na CURRENT_USER (wywołujący, czyli nasz nowy użytkownik), musimy nadać uprawnienia obiektom używanym przez procedurę. Dowiedz się więcej .
źródło
Nie używaj tego podejścia w krytycznych środowiskach, takich jak TEST i PROD. Poniższe kroki są tylko sugerowane dla środowiska lokalnego. Dla mojego hosta lokalnego tworzę użytkownika w następujący sposób:
WAŻNA UWAGA: Utwórz użytkownika z poświadczeniami użytkownika SYSTEM, w przeciwnym razie możesz napotkać problem podczas uruchamiania wielu aplikacji na tej samej bazie danych.
CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database.
Następnie uruchom poniższy skrypt
CREATE USER <<username>> IDENTIFIED BY <<password>>; -- create user with password GRANT CONNECT,RESOURCE,DBA TO <<username>>; -- grant DBA,Connect and Resource permission to this user(not sure this is necessary if you give admin option) GRANT CREATE SESSION TO <<username>> WITH ADMIN OPTION; --Give admin option to user GRANT UNLIMITED TABLESPACE TO <<username>>; -- give unlimited tablespace grant
EDYCJA: Jeśli napotkasz problem dotyczący oracle ora-28001, hasło wygasło, również może to być przydatne, uruchom
select * from dba_profiles;-- check PASSWORD_LIFE_TIME ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED
źródło
CONNECT,RESOURCE,DBA
„Role te są zapewniane w celu zapewnienia zgodności z poprzednimi wersjami bazy danych Oracle Database ... Firma Oracle zaleca zaprojektowanie własnych ról w celu zapewnienia bezpieczeństwa bazy danych, a nie poleganie na nich. Role te mogą nie zostać utworzone automatycznie w przyszłych wersjach Oracle Database”.Jak wcześniej wspomniano wielokrotnie w komentarzach, do używania
CONNECT
,RESOURCE
aDBA
role jest odradzane przez Oracle.Musisz połączyć się jako SYS, aby utworzyć swoją rolę i użytkowników, którym przypisano tę rolę. Możesz używać SQL Developer lub SQL * Plus według własnego uznania. Nie zapomnij wspomnieć o roli SYSDBA w ciągu logowania.
connect_identifier
Wykorzystuje różne składnie.Załóżmy, że masz model 12cR1, taki jak ten dostarczony jako maszyna wirtualna podczas „ Dnia programisty sieci Oracle Technology Network ”. Ciągi połączenia mogą być (do połączenia z dostarczonym PDB):
sqlplus sys/[email protected]/orcl as sysdba sqlplus sys@"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear
Zwróć uwagę, że pod Uniksem cudzysłowy muszą zostać zmienione, w przeciwnym razie zostaną zużyte przez powłokę. Tak
"
się stanie\"
.Następnie tworzysz rolę
MYROLE
i nadajesz jej inne role lub uprawnienia. Dodałem prawie absolutne minimum, aby zrobić coś ciekawego:create role myrole not identified; grant create session to myrole; grant alter session to myrole; grant create table to myrole;
Następnie utwórz użytkownika
MYUSER
. W ciągu, poidentified by
którym następuje hasło, rozróżniana jest wielkość liter. Reszta nie jest. Możesz również użyć identyfikatorów rozdzielanych SQL (w cudzysłowach"
) zamiast zwykłych identyfikatorów, które są konwertowane na wielkie litery i podlegają kilku ograniczeniom. Limit mógłby byćunlimited
zamiast20m
.create user myuser identified by myuser default tablespace users profile default account unlock; alter user myuser quota 20m on users; grant myrole to myuser;
W końcu łączysz się jako nowy użytkownik.
Pamiętaj, że możesz również zmienić domyślny profil lub podać inny, aby dostosować niektóre ustawienia, takie jak okres ważności haseł, liczba dozwolonych nieudanych prób logowania itp.
źródło
CREATE USER USER_NAME IDENTIFIED BY PASSWORD; GRANT CONNECT, RESOURCE TO USER_NAME;
źródło
CONNECT,RESOURCE,DBA
„Role te są zapewniane w celu zapewnienia zgodności z poprzednimi wersjami bazy danych Oracle Database ... Firma Oracle zaleca zaprojektowanie własnych ról w celu zapewnienia bezpieczeństwa bazy danych, a nie poleganie na nich. Role te mogą nie zostać utworzone automatycznie w przyszłych wersjach Oracle Database”.CREATE USER books_admin IDENTIFIED BY MyPassword; GRANT CONNECT TO books_admin; GRANT CONNECT, RESOURCE, DBA TO books_admin; GRANT CREATE SESSION GRANT ANY PRIVILEGE TO books_admin; GRANT UNLIMITED TABLESPACE TO books_admin; GRANT SELECT, INSERT, UPDATE, DELETE ON schema.books TO books_admin;
https://docs.oracle.com/cd/B19306_01/network.102/b14266/admusers.htm#i1006107 https://chartio.com/resources/tutorials/how-to-create-a-user-and-grant -permissions-in-oracle /
źródło
Pierwszy krok:
Connect to a database using System/Password;
drugi krok:
Ex: create user manidb idntified by mypass;
trzeci krok:
Ex: grant connect,resource to manidb;
źródło
krok 1 .
create user raju identified by deshmukh;
krok 2.
grant connect , resource to raju;
krok 3.
grant unlimitted tablespace to raju;
krok 4.
grant select , update , insert , alter to raju;
źródło
CONNECT,RESOURCE,DBA
„Role te są zapewniane w celu zapewnienia zgodności z poprzednimi wersjami bazy danych Oracle Database ... Firma Oracle zaleca zaprojektowanie własnych ról w celu zapewnienia bezpieczeństwa bazy danych, a nie poleganie na nich. Role te mogą nie zostać utworzone automatycznie w przyszłych wersjach Oracle Database”.