콘텐츠로 이동

CREATE USER

CREATE USER#

구문#

create_user ::=#

create_user_image155

password_parameters ::=#

password_parameters

전제 조건#

SYS 사용자와 CREATE USER 시스템 권한을 가진 사용자만이 사용자를 생성할 수 있다.

설명#

명시된 사용자 이름, 암호, 테이블스페이스 접근 권한으로 데이터베이스 사용자를 생성하는 구문이다.

user_name#

생성될 사용자 이름을 명시한다. 사용자의 이름은 데이터베이스 내에서 유일해야 한다. 사용자 이름은 2장의 "객체 이름 규칙"을 따라야 한다.

IDENTIFIED BY password#

Altibase는 비밀 번호를 사용해서 사용자를 인증한다. 사용자 비밀 번호의 최대 길이는 40바이트이다. 만일 이보다 더 긴 문자열의 비밀 번호를 명시하여 사용자를 생성하면, 오류가 반환된다. 비밀 번호는 기본적으로 대소문자 구분 없이 대문자로 인식된다. 만약 사용자 암호의 대소문자를 구분하기 위해서는 CASE_SENSITIVE_PASSWORD 프로퍼티를 1로 설정한 다음, CREATE USER 구문으로 사용자를 생성할 때 암호를 큰따옴표(")로 묶는다.

사용자 비밀 번호는 2장의 "객체 이름 규칙"을 따라야 한다.

TEMPORARY TABLESPACE 절#

이는 사용자가 테이블에 연산 수행시 중간 결과가 저장될 용도로 사용될 기본 임시 테이블스페이스(DEFAULT TEMPORARY TABLESPACE)를 지정하는 절이다.

이를 명시하지 않으면 시스템 임시 테이블스페이스1가 해당 사용자의 기본 임시 테이블스페이스로 지정된다.

사용자가 디스크 기반 테이블에 대한 SQL문을 수행할 때 일반적으로 임시 테이블스페이스가 사용된다.

만약 SQL문내의 모든 테이블들이 메모리에 존재하는 테이블이라면, 쿼리 수행시 Altibase가 사용하는 공간도 모두 메모리이며, 사용자가 힌트를 사용하지 않는다면 임시 테이블스페이스를 사용하지 않는다.

임시 테이블스페이스는 한 사용자에 하나만 지정할 수 있다.

DEFAULT TABLESPACE 절#

사용자가 생성한 객체를 저장할 기본 테이블스페이스를 명시한다. 이 절을 생략하면 시스템 메모리 기본 테이블스페이스가 사용자의 기본 테이블스페이스가 된다.

기본 테이블스페이스는 한 사용자에 하나만 지정할 수 있다.

ACCESS 절#

명시한 (tablespace_name) 테이블스페이스에 접근 가능 여부를 지정하는 절이다. ACCESS tablespace_name ON으로 지정한 테이블스페이스에 대해서는 사용자는 접근 권한을 부여 받는다. OFF로 명시한 테이블스페이스에 대해서는 사용자가 접근이 불가능하다.

물론, ALTER TABLESPACE 시스템 권한이 부여된 사용자는 테이블스페이스 접근이 가능하다.

ENABLE/ DISABLE#

사용자의 TCP 접속을 허용하거나 제한할 수 있다. 이 절은 SYS 사용자만 수행할 수 있다.

password_parameters#

FAILED_LOGIN_ATTEMPTS#

로그인을 시도할 때 이 값에 설정한 횟수만큼 실패하면 해당 계정은 잠금이 해제될 때까지 로그인이 불가능하다.
PASSWORD_LOCK_TIME이 설정되어 있는 경우 해당 기간이 경과하면 잠금이 자동으로 해제된다.

PASSWORD_LOCK_TIME#

차단된 계정이 해제되기 위해 경과되어야 하는 날짜(단위: 일)를 지정한다. 예를 들어, 이 값을 5로 지정했을 때 계정이 잠긴다면, 해당 계정은 5일이 지난 후에 잠금이 풀리고 로그인이 가능해진다.

PASSWORD_LIFE_TIME#

계정의 패스워드가 유효한 기간(단위: 일)을 지정한다. 마지막으로 패스워드를 변경한 시점을 기준으로 PASSWORD_LIFE_TIME이 적용된다.

PASSWORD_GRACE_TIME#

계정의 패스워드가 만료된 이후의 변경할 수 있는 유예 기간(단위: 일)을 지정한다. 패스워드 유효 기간이 만료되면 유예 기간이 경과하기 전에 해당 계정으로 로그인하여 패스워드를 변경해야 한다. 만약 패스워드 유예기간도 경과하면, SYS 계정으로 로그인하여 해당 계정의 패스워드를 변경해야 한다.

PASSWORD_REUSE_TIME#

동일한 패스워드를 재사용하기 위해 경과해야 하는 기간(단위:일)을 지정한다. 즉, 여기에 설정한 기간이 지난 후에 동일한 패스워드를 재사용할 수 있다.

PASSWORD_REUSE_MAX#

동일한 패스워드를 재사용하기 위한 패스워드 변경 횟수를 지정한다. 즉, 여기에 설정한 횟수만큼 패스워드를 변경한 후에 동일한 패스워드를 재사용할 수 있다.

주의: PASSWORD_REUSE_MAX 또는 PASSWORD_REUSE_TIME 중 하나만 지정하면, 동일한 패스워드를 재사용할 수 없다.

PASSWORD_VERIFY_FUNCTION#

여기에 사용자 정의 콜백 함수(CALLBACK function)를 등록하여 패스워드를 검증하도록 할 수 있다. 사용자 정의 콜백 함수는 반드시 'TRUE'를 반환해야 한다.

패스워드 검증용 콜백 함수는 아래와 같은 입력 파라미터와 반환 타입을 가져야 한다:

CREATE OR REPLACE FUNCTION pwd_verify_function (
  username varchar(20),
  password varchar(20))
  RETURN varchar(100)
AS
result        varchar(100);
...
BEGIN
    ...
    result := 'TRUE';
    RETURN result;
END;
/

제한 사항#

한 사용자는 여러 데이터 테이블스페이스를 사용할 수 있다. 그러나 한 사용자는 임시 테이블스페이스는 하나만 사용할 수 있다.

사용자가 명시적으로 시스템 언두 테이블스페이스에 접근하거나, 언두 테이블스페이스 내에 테이블이나 인덱스 등을 생성하는 것은 불가능하다. 또한, 시스템 언두 테이블스페이스는 데이터베이스 내에 오직 하나만 존재하며, 사용자가 이를 생성하거나 삭제할 수 없다.

예제#

<질의> 사용자 명이 uare1이고 암호가 rose1인 사용자를 생성하라.

iSQL> CREATE USER uare1 IDENTIFIED BY rose1;
Create success.

<질의> 사용자 이름이 uare4이고 암호가 rose4인 사용자를 생성하라. 또한 user_data를 사용자의 기본 테이블스페이스로, temp_data 테이블스페이스를 임시 테이블스페이스로 사용하며, 메모리 테이블스페이스인 SYS_TBS_MEMORY에 대해 접근 권한을 가지고 있다.

iSQL> CREATE USER uare4
        IDENTIFIED BY rose4
        DEFAULT TABLESPACE user_data
        TEMPORARY TABLESPACE temp_data
        ACCESS SYS_TBS_MEMORY ON;
Create success.

<질의> 로그인을 5번 실패하면 해당 계정이 잠기고, 5일 후에 잠금이 풀리게 되는 사용자 rose2를 생성한다.

iSQL> CREATE USER rose2 IDENTIFIED BY rose2 
  LIMIT (FAILED_LOGIN_ATTEMPTS 5, PASSWORD_LOCK_TIME 5);

<질의> 5일 후에 패스워드가 만료되고, 그 후 5일간 유예기간을 갖는 사용자 rose3을 생성한다.

iSQL> CREATE USER rose3 IDENTIFIED BY rose3
  LIMIT (PASSWORD_LIFE_TIME 5, PASSWORD_GRACE_TIME 5);

<질의> 패스워드를 3회 변경하고 10일이 지난 후에 동일한 패스워드를 재사용할 수 있는 사용자 rose4를 생성한다.

iSQL> CREATE USER rose4 IDENTIFIED BY rose4
  LIMIT (PASSWORD_REUSE_MAX 3, PASSWORD_REUSE_TIME 10);

  1. SYSTEM TEMPORARY TABLESPACE는 쿼리 수행 중에 발생되는 임시 데이타들을 저장하는데 사용된다. 로깅이 수행되지 않기 때문에 매체 오류 시 이 테이블스페이스의 데이터는 복구가 불가능하다.