누군가 Oracle 11g에서 사용자를 만드는 방법에 대해 조언하고 해당 사용자에게 특정 저장 프로 시저와 해당 프로 시저의 테이블 만 실행할 수있는 권한 만 부여 할 수 있습니까?
이 작업을 수행하는 방법을 잘 모르겠습니다!
답변:
SYSTEM으로 연결합니다.
CREATE USER username IDENTIFIED BY apassword;
GRANT CONNECT TO username;
GRANT EXECUTE on schema.procedure TO username;
다음을 수행해야 할 수도 있습니다.
GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;
프로 시저가 사용하는 테이블에.
Oracle에서 사용자를 생성하려면 아래 단계를 따르십시오.
-시스템 사용자로 연결
CONNECT <USER-NAME>/<PASSWORD>@<DATABASE NAME>;
-사용자 쿼리 생성
CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>;
-역할 제공
GRANT CONNECT,RESOURCE,DBA TO <USER NAME>;
-특권 제공
GRANT CREATE SESSION, GRANT ANY PRIVILEGE TO <USER NAME>;
GRANT UNLIMITED TABLESPACE TO <USER NAME>;
-테이블에 대한 액세스를 제공합니다.
GRANT SELECT,UPDATE,INSERT ON <TABLE NAME> TO <USER NAME>;
Oracle 설명서는 포괄적이고 온라인이며 무료입니다. 그것을 사용하는 법을 배워야합니다. 여기 에서 CREATE USER에 대한 구문 과 여기 에서 GRANT에 대한 구문을 찾을 수 있습니다 .
데이터베이스에 연결하려면 사용자 에게 CREATE SESSION 권한 을 부여해야합니다 .
저장 프로 시저에 대한 새 사용자 권한을 허용하려면 EXECUTE 권한을 부여해야합니다. 부여자는 다음 중 하나 여야합니다.
일반적으로 프로 시저를 사용하기 위해 저장 프로 시저에서 사용하는 개체에 대한 권한을 부여 할 필요는 없습니다. 기본 권한은 프로 시저 소유자와 동일한 권한으로 프로 시저를 실행하고 프로 시저 실행시 권한을 상속하는 것입니다. 이것은 AUTHID 절에 의해 다루어집니다. 기본값은 정의 자 (예 : 프로 시저 소유자)입니다. AUTHID가 CURRENT_USER (호출자, 즉 새 사용자)로 설정된 경우에만 프로 시저에서 사용하는 개체에 대한 권한을 부여해야합니다. 자세히 알아보십시오 .
TEST 및 PROD와 같은 중요한 환경에서는 이러한 접근 방식을 사용하지 마십시오. 아래 단계는 로컬 환경을 위해 제안됩니다. 내 로컬 호스트의 경우 다음 단계를 통해 사용자를 만듭니다.
중요 참고 : SYSTEM 사용자 자격 증명으로 사용자를 생성하십시오 . 그렇지 않으면 동일한 데이터베이스에서 여러 응용 프로그램을 실행할 때 문제가 발생할 수 있습니다.
CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database.
그런 다음 아래 스크립트 실행
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
편집 : oracle ora-28001에 대한 문제가 발생하면 암호가 만료 된 경우에도 유용 할 수 있습니다.
select * from dba_profiles;-- check PASSWORD_LIFE_TIME
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED
이전에 주석에서 여러 번 언급했듯이 Oracle은 CONNECT
, RESOURCE
및 DBA
역할 의 사용을 권장하지 않습니다.
역할과이 역할이 부여 된 사용자를 생성하려면 SYS로 연결해야합니다. 원하는대로 SQL Developer 또는 SQL * Plus를 사용할 수 있습니다. 로그온 문자열에서 SYSDBA 역할을 언급하는 것을 잊지 마십시오. 는 connect_identifier
다른 구문을 사용합니다.
sqlplus sys/<<password>>@<<connect_identifier>> as sysdba
" Oracle Technology Network Developer Day " 에서 VM으로 제공된 것과 같은 12cR1이 있다고 가정 해 보겠습니다 . 연결 문자열은 (제공된 PDB에 연결하기 위해) 다음과 같을 수 있습니다.
sqlplus sys/oracle@127.0.0.1/orcl as sysdba
sqlplus sys@"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear
Unix에서는 따옴표를 이스케이프해야합니다. 그렇지 않으면 셸에서 사용됩니다. 따라서 "
해진다 \"
.
그런 다음 역할을 만들고 MYROLE
다른 역할이나 권한을 부여합니다. 흥미로운 일을하기 위해 거의 최소한의 것을 추가했습니다.
create role myrole not identified;
grant create session to myrole;
grant alter session to myrole;
grant create table to myrole;
다음으로 사용자를 만듭니다 MYUSER
. 뒤에 오는 identified by
비밀번호 문자열 은 대소 문자를 구분합니다. 나머지는 그렇지 않습니다. "
tu 대문자로 변환되고 몇 가지 제한 사항이 적용되는 일반 식별자 대신 SQL 구분 식별자 (따옴표로 묶음 )를 사용할 수도 있습니다 . 할당량 unlimited
은 20m
.
create user myuser identified by myuser default tablespace users profile default account unlock;
alter user myuser quota 20m on users;
grant myrole to myuser;
결국 새로운 사용자로 연결됩니다.
기본 프로필을 변경하거나 다른 프로필을 제공하여 암호 만료 기간, 허용 된 로그인 시도 횟수 등의 일부 설정을 사용자 지정할 수도 있습니다.
CREATE USER USER_NAME IDENTIFIED BY PASSWORD;
GRANT CONNECT, RESOURCE TO USER_NAME;
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 -오라클 내 권한 /
1 단계 .
create user raju identified by deshmukh;
2 단계.
grant connect , resource to raju;
3 단계.
grant unlimitted tablespace to raju;
step4.
grant select , update , insert , alter to raju;
CONNECT
역할에는 이름이 제안하는 것보다 더 많은 권한이 있습니다. 나는 오히려 대신 부여하고 싶습니다CREATE SESSION
.