데이터 제어 언어 구조적 쿼리 언어의 하위 집합입니다. 데이터베이스 관리자는 DCL을 사용하여 관계형 데이터베이스에 대한 보안 액세스를 구성합니다. 데이터 정의 언어를 보완합니다. , 데이터베이스 개체를 추가 및 삭제하고 데이터 조작 언어 데이터베이스의 내용을 검색, 삽입 및 수정합니다.
DCL은 GRANT, REVOKE 및 DENY의 세 가지 명령으로만 구성되므로 가장 간단한 SQL 하위 집합입니다. 이 세 가지 명령을 결합하여 관리자는 세부적인 방식으로 데이터베이스 권한을 설정 및 제거할 수 있는 유연성을 제공합니다.
GRANT 명령으로 권한 추가
GRANT 명령은 데이터베이스 사용자에게 새 권한을 추가합니다. 다음과 같이 정의된 매우 간단한 구문이 있습니다.
GRANT [privilege]
ON [object]
TO [user]
[WITH GRANT OPTION]
다음은 이 명령으로 제공할 수 있는 각 매개변수에 대한 요약입니다.
- 특권 — 키워드 ALL(다양한 권한 부여) 또는 특정 데이터베이스 권한 또는 권한 집합일 수 있습니다. 예를 들면 CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE 및 CREATE VIEW가 있습니다.
- 개체 — 모든 데이터베이스 개체가 될 수 있습니다. 유효한 권한 옵션은 이 절에 포함하는 데이터베이스 개체의 유형에 따라 다릅니다. 일반적으로 개체는 데이터베이스, 함수, 저장 프로시저, 테이블 또는 보기입니다.
- 사용자 — 모든 데이터베이스 사용자가 될 수 있습니다. 역할 기반 데이터베이스 보안을 사용하려는 경우 이 절에서 사용자의 역할을 대체할 수도 있습니다.
- 옵션인 WITH GRANT OPTION을 포함하는 경우 GRANT 명령 끝에 절을 사용하면 SQL 문에 정의된 권한을 지정된 사용자에게 부여할 뿐만 아니라 다른 에게도 동일한 권한을 추가로 부여할 수 있는 권한을 부여합니다. 데이터베이스 사용자. 이러한 이유로 이 절을 주의해서 사용하십시오.
예를 들어 사용자에게 Joe 직원으로부터 정보를 검색하는 기능 HR이라는 데이터베이스의 테이블 . 다음 SQL 명령을 사용하십시오.
GRANT SELECT
ON HR.employees
TO Joe
Joe는 직원 테이블에서 정보를 검색할 수 있습니다. 그러나 DCL 스크립트에 WITH GRANT OPTION 절이 포함되어 있지 않기 때문에 다른 사용자에게 해당 테이블에서 정보를 검색할 수 있는 권한을 부여할 수 없습니다.
데이터베이스 액세스 취소
REVOKE 명령은 이전에 이러한 액세스 권한이 부여된 사용자로부터 데이터베이스 액세스를 제거합니다. 이 명령의 구문은 다음과 같이 정의됩니다.
REVOKE [GRANT OPTION FOR] [permission]
ON [object]
FROM [user]
[CASCADE]
REVOKE 명령의 매개변수에 대한 요약은 다음과 같습니다.
- 권한 — 식별된 사용자로부터 제거할 데이터베이스 권한을 지정합니다. 이 명령은 식별된 권한에 대해 이전에 이루어진 GRANT 및 DENY 주장을 모두 취소합니다.
- 개체 — 모든 데이터베이스 개체가 될 수 있습니다. 유효한 권한 옵션은 이 절에 포함하는 데이터베이스 개체의 유형에 따라 다릅니다. 일반적으로 개체는 데이터베이스, 함수, 저장 프로시저, 테이블 또는 보기입니다.
- 사용자 — 모든 데이터베이스 사용자가 될 수 있습니다. 역할 기반 데이터베이스 보안을 사용하려는 경우 이 절에서 사용자의 역할을 대체할 수도 있습니다.
- 그랜트 옵션 절은 다른 사용자에게 지정된 권한을 부여하는 지정된 사용자의 능력을 제거합니다. GRANT OPTION FOR을 포함하는 경우 REVOKE 문의 절에서 기본 권한은 취소되지 않습니다. 이 조항은 권한 부여만 취소합니다.
- 캐스케이드 옵션은 또한 지정된 사용자가 권한을 부여한 모든 사용자로부터 지정된 권한을 취소합니다.
다음 명령은 이전 예에서 Joe에게 부여된 권한을 취소합니다.
REVOKE SELECT
ON HR.employees
FROM Joe
명시적으로 데이터베이스 액세스 거부
DENY 명령은 사용자가 특정 권한을 받는 것을 명시적으로 방지합니다. 이 기능은 사용자가 권한이 부여된 역할 또는 그룹의 구성원이고 예외를 만들어 개별 사용자가 권한을 상속하지 못하도록 하려는 경우에 유용합니다. 이 명령의 구문은 다음과 같습니다.
DENY [permission]
ON [object]
TO [user]
DENY 명령에 대한 매개변수는 GRANT 명령에 사용된 매개변수와 동일합니다. 예를 들어, Matthew가 직원 테이블에서 정보를 삭제하는 기능을 받지 못하도록 하려면 다음 명령을 실행하십시오.
DENY DELETE
ON HR.employees
TO Matthew