

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# CREATE USER
<a name="r_CREATE_USER"></a>

새 데이터베이스 사용자를 생성합니다. 데이터베이스 사용자는 권한 및 역할에 따라 데이터베이스에서 데이터를 검색하고, 명령을 실행하고, 기타 작업을 수행할 수 있습니다. 이 명령을 실행하려면 데이터베이스 슈퍼 사용자여야 합니다.

## 필수 권한
<a name="r_CREATE_USER-privileges"></a>

CREATE USER에 필요한 권한은 다음과 같습니다.
+ 수퍼유저
+ CREATE USER 권한이 있는 사용자

## 구문
<a name="r_CREATE_USER-synopsis"></a>

```
CREATE USER name [ WITH ]
PASSWORD { 'password' | 'md5hash' | 'sha256hash' | DISABLE }
[ option [ ... ] ]

where option can be:

CREATEDB | NOCREATEDB
| CREATEUSER | NOCREATEUSER
| SYSLOG ACCESS { RESTRICTED | UNRESTRICTED }
| IN GROUP groupname [, ... ]
| VALID UNTIL 'abstime'
| CONNECTION LIMIT { limit | UNLIMITED }
| SESSION TIMEOUT limit
| EXTERNALID external_id
```

## 파라미터
<a name="r_CREATE_USER-parameters"></a>

 *이름*   
생성할 사용자의 이름입니다. 사용자 이름은 `PUBLIC`일 수 없습니다. 유효한 이름에 대한 자세한 내용은 [이름 및 식별자](r_names.md) 섹션을 참조하세요.

WITH  
선택적 키워드입니다. WITH는 Amazon Redshift에서 무시됩니다.

PASSWORD { '*password*' \| '*md5hash*' \| '*sha256hash*' \| DISABLE }  
사용자의 암호를 설정합니다.  
기본적으로, 암호가 비활성화 상태가 아닌 이상 사용자는 암호를 변경할 수 있습니다. 사용자의 암호를 비활성화하려면 DISABLE을 지정하세요. 사용자 암호를 비활성화하면 시스템에서 해당 암호가 삭제되고 사용자는 임시 AWS Identity and Access Management(IAM) 사용자 자격 증명만 이용해 로그인할 수 있습니다. 자세한 내용은 [IAM 인증을 이용한 데이터베이스 사용자 자격 증명 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-user-credentials.html)을 참조하세요. 수퍼유저만이 암호를 활성화 또는 비활성화할 수 있습니다. 수퍼유저의 암호를 비활성화할 수는 없습니다. 암호를 활성화하려면 [ALTER USER](r_ALTER_USER.md) 섹션을 실행하고 암호를 지정하세요.  
암호를 일반 텍스트, MD5 해시 문자열 또는 SHA256 해시 문자열로 지정할 수 있습니다.  
 AWS Management Console, AWS CLI 또는 Amazon Redshift API를 사용하여 새 클러스터를 시작할 때 초기 데이터베이스 사용자를 위한 일반 텍스트 암호를 입력해야 합니다. 이후에 [ALTER USER](r_ALTER_USER.md)를 사용하여 암호를 변경할 수 있습니다.
일반 텍스트의 경우, 암호는 다음 제약 조건을 충족해야 합니다.  
+ 8\~64자 사이의 길이여야 합니다.
+ 최소한 대문자 1개, 소문자 1개 및 숫자 1개를 포함해야 합니다.
+ '(작은따옴표), "(큰따옴표), \\, / 또는 @을 제외하고 모든 ASCII 문자(ASCII 코드 33\~126)를 사용할 수 있습니다.
CREATE USER 암호 파라미터를 일반 텍스트로 전달하는 대신 사용할 수 있는 더 안전한 방법으로, 암호와 사용자 이름을 포함하는 문자열의 MD5 해시를 지정할 수 있습니다.  
MD5 해시 문자열을 지정하면 CREATE USER 명령이 유효한 MD5 해시 문자열이 있는지 확인하지만 그 문자열에서 암호 부분의 유효성을 검사하지는 않습니다. 이 경우에는 빈 문자열과 같은 암호를 생성할 수 있는데, 이 암호로 데이터베이스에 로그인할 수는 없습니다.
MD5 암호를 지정하려면 다음 단계를 따르세요.  

1. 암호와 사용자 이름을 연결합니다.

   예를 들어, 암호가 `ez`이고 사용자가 `user1`인 경우 연결된 문자열은 `ezuser1`입니다.

1. 연결된 문자열을 32자의 MD5 해시 문자열로 변환합니다. MD5 유틸리티를 사용하여 해시 문자열을 생성할 수 있습니다. 다음 예에서는 Amazon Redshift [MD5 함수](r_MD5.md) 및 연결 연산자(\|\|)를 사용하여 32자의 MD5 해시 문자열을 반환합니다.

   ```
   select md5('ez' || 'user1');
                           
   md5
   --------------------------------
   153c434b4b77c89e6b94f12c5393af5b
   ```

1. MD5 해시 문자열 앞에 '`md5`'를 연결하고 연결된 문자열을 *md5hash* 인수로 제공합니다.

   ```
   create user user1 password 'md5153c434b4b77c89e6b94f12c5393af5b';
   ```

1. 로그인 자격 증명을 사용하여 데이터베이스에 로그인합니다.

   이 예의 경우 암호 `user1`를 사용하여 `ez`로 로그인합니다.
또 다른 안전한 대안은 암호 문자열의 SHA-256 해시를 지정하는 것입니다. 또는 사용자 고유의 유효한 SHA-256 다이제스트 및 다이제스트를 생성하는 데 사용된 256비트 솔트를 제공할 수 있습니다.  
+ 다이제스트 – 해싱 함수의 출력입니다.
+ 솔트 – 해시 함수 출력의 패턴을 줄이는 데 도움이 되도록 암호와 결합되는 무작위로 생성된 데이터입니다.

```
'sha256|Mypassword'
```

```
'sha256|digest|256-bit-salt'
```
다음 예에서 Amazon Redshift는 솔트를 생성하고 관리합니다.  

```
CREATE USER admin PASSWORD 'sha256|Mypassword1';
```
다음 예에서는 유효한 SHA-256 다이제스트 및 다이제스트를 생성하는 데 사용된 256비트 솔트가 제공됩니다.  
비밀번호를 지정하고 자체 솔트로 해시하려면 다음 단계를 따릅니다.  

1. 256비트 솔트를 생성합니다. 16진수 문자열 생성기를 사용하여 64자 길이의 문자열을 생성하면 솔트를 확보할 수 있습니다. 이 예제에서 솔트는 `c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6`입니다.

1.  FROM\_HEX 함수를 사용하여 솔트를 바이너리로 변환합니다. SHA2 함수에는 솔트의 바이너리 표현이 필요하기 때문입니다. 다음 문을 참조하세요.

   ```
   SELECT FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6');
   ```

1.  CONCAT 함수를 사용하여 솔트를 비밀번호에 추가하세요. 이 예제의 암호는 `Mypassword1`입니다. 다음 문을 참조하세요.

   ```
   SELECT CONCAT('Mypassword1',FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6'));
   ```

1. SHA2 함수를 사용하여 암호와 솔트 조합으로 다이제스트를 만들 수 있습니다. 다음 문을 참조하세요.

   ```
   SELECT SHA2(CONCAT('Mypassword1',FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6')), 0);
   ```

1.  이전 단계의 다이제스트와 솔트를 사용하여 사용자를 생성합니다. 다음 문을 참조하세요.

   ```
   CREATE USER admin PASSWORD 'sha256|821708135fcc42eb3afda85286dee0ed15c2c461d000291609f77eb113073ec2|c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6';
   ```

1. 로그인 자격 증명을 사용하여 데이터베이스에 로그인합니다.

    이 예의 경우 암호 `admin`를 사용하여 `Mypassword1`로 로그인합니다.
해싱 함수를 지정하지 않고 암호를 일반 텍스트로 설정하면 사용자 이름을 솔트로 사용하여 MD5 다이제스트가 생성됩니다.

CREATEDB \| NOCREATEDB   
CREATEDB 옵션을 사용하여 신규 사용자가 새 데이터베이스를 만들 수 있습니다. 기본값은 NOCREATEDB입니다.

CREATEUSER \| NOCREATEUSER   
CREATEUSER 옵션으로 CREATE USER를 포함한 모든 데이터베이스 권한을 가진 수퍼유저를 생성합니다. 기본값은 NOCREATEUSER입니다. 자세한 내용은 [슈퍼 사용자](r_superusers.md) 섹션을 참조하세요.

SYSLOG ACCESS { RESTRICTED \| UNRESTRICTED }  <a name="create-user-syslog-access"></a>
Amazon Redshift 시스템 테이블 및 뷰에 대한 사용자의 액세스 수준을 지정합니다.  
SYSLOG ACCESS RESTRICTED 권한이 있는 일반 사용자는 사용자 가시성 시스템 테이블 및 뷰에서 해당 사용자가 생성한 행만 볼 수 있습니다. 기본값은 RESTRICTED입니다.  
SYSLOG ACCESS UNRESTRICTED 권한이 있는 일반 사용자는 사용자 가시성 시스템 테이블 및 뷰에서 다른 사용자가 생성한 행을 포함한 모든 행을 볼 수 있습니다. UNRESTRICTED는 수퍼유저 가시성 테이블에 대한 일반 사용자 액세스를 부여하지 않습니다. 수퍼유저만 수퍼유저 가시성 테이블을 볼 수 있습니다.  
사용자에게 시스템 테이블에 대한 무제한 액세스를 제공하면 다른 사용자가 생성한 데이터에 대한 가시성이 사용자에게 제공됩니다. 예를 들어, STL\_QUERY 및 STL\_QUERYTEXT에는 INSERT, UPDATE 및 DELETE 문의 전체 텍스트가 포함되며, 여기에는 사용자가 생성한 민감한 데이터가 포함될 수 있습니다.
SVV\_TRANSACTIONS의 모든 행은 모든 사용자에게 표시됩니다.  
자세한 내용은 [시스템 테이블 및 뷰에 있는 데이터의 가시성](cm_chap_system-tables.md#c_visibility-of-data) 섹션을 참조하세요.

IN GROUP *groupname*   
사용자가 속한 기존 그룹의 이름을 지정합니다. 여러 개의 그룹 이름이 목록에 표시될 수 있습니다.

VALID UNTIL *abstime*   
VALID UNTIL 옵션은 그 시간 이후로는 사용자 암호가 더 이상 유효하지 않게 되는 절대 시간을 설정합니다. 기본적으로 암호에는 제한 시간이 없습니다.

CONNECTION LIMIT { *limit* \| UNLIMITED }   
사용자가 동시에 열어놓을 수 있는 데이터베이스 연결의 최대 개수입니다. 슈퍼 사용자에 대해서는 이 제한이 적용되지 않습니다. 최대 동시 연결 수를 허용하려면 UNLIMITED 키워드를 사용하세요. 각 데이터베이스에 대한 연결 개수 제한이 적용될 수도 있습니다. 자세한 내용은 [데이터베이스 생성](r_CREATE_DATABASE.md) 섹션을 참조하세요. 기본값은 UNLIMITED입니다. 현재 연결을 보려면 [STV\_SESSIONS](r_STV_SESSIONS.md) 시스템 뷰를 쿼리하세요.  
사용자 및 데이터베이스 연결 제한이 모두 적용되는 경우 사용되지 않는 연결 슬롯은 사용자가 연결 시도 시 양쪽 제한 범위 내에서 모두 사용 가능해야 합니다.

SESSION TIMEOUT *limit*  
세션이 비활성 또는 유휴 상태로 유지되는 최대 시간(초)입니다. 범위는 60초(1분)\~1,728,000초(20일)입니다. 사용자에 대해 세션 시간 제한이 설정되지 않은 경우 클러스터 설정이 적용됩니다. 자세한 내용은 *Amazon Redshift 관리 가이드*의 [Amazon Redshift의 할당량 및 제한](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) 섹션을 참조하세요.  
세션 시간 제한을 설정하면 새 세션에만 적용됩니다.  
시작 시간, 사용자 이름 및 세션 시간 제한을 포함하여 활성 사용자 세션에 대한 정보를 보려면 [STV\_SESSIONS](r_STV_SESSIONS.md) 시스템 뷰를 쿼리합니다. 사용자 세션 기록에 대한 정보를 보려면 [STL\_SESSIONS](r_STL_SESSIONS.md) 뷰를 쿼리합니다. 세션 시간 제한 값을 포함하여 데이터베이스 사용자에 대한 정보를 검색하려면 [SVL\_USER\_INFO](r_SVL_USER_INFO.md) 뷰를 쿼리합니다.

EXTERNALID *external\_id*  
자격 증명 공급자와 연결된 사용자의 식별자입니다. 사용자는 암호를 비활성화해야 합니다. 자세한 내용은 [Amazon Redshift용 네이티브 자격 증명 공급자(IdP) 페더레이션](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-native-idp.html)을 참조하세요.

### 사용 노트
<a name="create_user-usage-notes"></a>

기본적으로, 모든 사용자는 PUBLIC 스키마에 대해 CREATE 및 USAGE 권한이 있습니다. 사용자가 데이터베이스의 PUBLIC 스키마에 객체를 만들도록 허용하지 않으려면 REVOKE 명령을 사용하여 그 권한을 제거하세요.

IAM 인증을 이용해 데이터베이스 사용자 자격 증명을 만들 때는 임시 자격 증명만을 이용해 로그인할 수 있는 수퍼유저를 만들 수 있습니다. 수퍼유저의 암호를 비활성화할 수는 없지만 임의로 생성되는 MD5 해시 문자열을 이용해 알 수 없는 암호를 만들 수는 있습니다.

```
create user iam_superuser password 'md5A1234567890123456780123456789012' createuser;
```

큰따옴표로 묶여 있는 *사용자 이름*의 대/소문자는 `enable_case_sensitive_identifier` 구성 옵션 설정과 관계없이 항상 유지됩니다. 자세한 내용은 [enable\_case\_sensitive\_identifier](r_enable_case_sensitive_identifier.md) 섹션을 참조하세요.

## 예제
<a name="r_CREATE_USER-examples"></a>

다음 명령은 이름이 dbuser이고 암호가 "abcD1234"이며 데이터베이스 생성 권한이 있고 연결 제한이 30인 사용자를 생성합니다.

```
create user dbuser with password 'abcD1234' createdb connection limit 30;
```

 PG\_USER\_INFO 카탈로그 테이블을 쿼리하여 데이터베이스 사용자에 대한 세부 정보를 봅니다.

```
select * from pg_user_info;
         
 usename   | usesysid | usecreatedb | usesuper | usecatupd | passwd   | valuntil | useconfig | useconnlimit
-----------+----------+-------------+----------+-----------+----------+----------+-----------+-------------
 rdsdb     |        1 | true        | true     | true      | ******** | infinity |           |
 adminuser |      100 | true        | true     | false     | ******** |          |           | UNLIMITED
 dbuser    |      102 | true        | false    | false     | ******** |          |           | 30
```

다음 예에서는 계정 암호가 2017년 6월 10일까지 유효합니다.

```
create user dbuser with password 'abcD1234' valid until '2017-06-10';
```

 다음 예에서는 특수 문자를 포함하고 대/소문자를 구분하는 암호를 가진 사용자를 생성합니다.

```
create user newman with password '@AbC4321!';
```

 MD5 암호에 백래시('\\')를 사용하려면 원본 문자열에 있는 백래시로 백래시를 이스케이프하세요. 다음 예에서는 이름이 `slashpass`이고 암호가 단일 백래시('`\`')인 사용자를 생성합니다.

```
select md5('\\'||'slashpass');
         
md5
--------------------------------
0c983d1a624280812631c5389e60d48c
```

md5 비밀번호로 사용자를 생성합니다.

```
create user slashpass password 'md50c983d1a624280812631c5389e60d48c';
```

다음 예에서는 유휴 세션 시간 제한이 120초로 설정된 `dbuser`라는 사용자를 생성합니다.

```
CREATE USER dbuser password 'abcD1234' SESSION TIMEOUT 120;
```

다음 예에서는 이름이 `bob`인 사용자를 생성합니다. 네임스페이스는 `myco_aad`입니다. 이것은 예시입니다. 명령을 성공적으로 실행하려면 등록된 ID 공급업체가 있어야 합니다. 자세한 내용은 [Native identity provider (IdP) federation for Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-native-idp.html)(Amazon Redshift용 네이티브 자격 증명 공급자(IdP) 페더레이션)를 참조하세요.

```
CREATE USER myco_aad:bob EXTERNALID "ABC123" PASSWORD DISABLE;
```