Docs Menu
Docs Home
/ /

createUser (데이터베이스 명령)

createUser

명령을 실행하는 데이터베이스에 새 사용자를 생성합니다. createUser 명령은 사용자가 있는 경우 중복 사용자 오류를 반환합니다.

mongosh 에서 이 명령은 db.createUser() 헬퍼 메서드를 통해서도 실행 수 있습니다.

헬퍼 메서드는 mongosh 사용자에게 편리하지만 데이터베이스 명령과 동일한 수준의 정보를 반환하지 못할 수 있습니다. 편의가 필요하지 않거나 추가 리턴 필드가 필요한 경우 데이터베이스 명령을 사용합니다.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전

  • MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전

중요

이 명령은 MongoDB Atlas 클러스터에서 지원되지 않습니다. 모든 명령에 대한 Atlas 지원 에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.

명령은 다음과 같은 구문을 가집니다:

메서드/명령 호출에서 암호를 직접 지정하는 대신 passwordPrompt() 메서드를 다양한 사용자 인증/관리 메서드/명령과 함께 사용하여 암호를 묻는 메시지를 표시할 수 있습니다. 그러나 이전 버전의 mongo 셸에서와 마찬가지로 비밀번호를 직접 지정할 수도 있습니다.

db.runCommand(
{
createUser: "<name>",
pwd: passwordPrompt(), // Or "<cleartext password>"
customData: { <any information> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
writeConcern: { <write concern> },
authenticationRestrictions: [
{ clientSource: [ "<IP|CIDR range>", ... ], serverAddress: [ "<IP|CIDR range>", ... ] },
...
],
mechanisms: [ "<scram-mechanism>", ... ],
digestPassword: <boolean>,
comment: <any>
}
)

createUser 에는 다음과 같은 필드가 있습니다:

필드
유형
설명

createUser

문자열

새 사용자의 이름입니다.

pwd

문자열

사용자의 비밀번호입니다. 데이터베이스 에서 를 실행 자격 증명 MongoDB 외부에 저장된 사용자를 생성하는 pwd 경우 필드 필요하지 않습니다.createUser $external

값은 다음 중 하나일 수 있습니다.

  • 일반 텍스트 string로 된 사용자 비밀번호

  • passwordPrompt(), 사용자의 비밀번호를 입력하라는 메시지를 표시합니다.

메서드/명령 호출에서 암호를 직접 지정하는 대신 passwordPrompt() 메서드를 다양한 사용자 인증/관리 메서드/명령과 함께 사용하여 암호를 묻는 메시지를 표시할 수 있습니다. 그러나 이전 버전의 mongo 셸에서와 마찬가지로 비밀번호를 직접 지정할 수도 있습니다.

customData

문서

선택 사항입니다. 모든 임의 정보입니다. 이 필드는 관리자가 이 특정 사용자와 연결하려는 데이터를 저장하는 데 사용될 수 있습니다. 예를 들어 사용자의 전체 이름이나 직원 ID가 될 수 있습니다.

roles

배열

사용자에게 부여된 역할입니다. 빈 배열 []을 지정하여 역할이 없는 사용자를 만들 수 있습니다.

digestPassword

부울

선택 사항입니다. 서버 또는 클라이언트 중 어느 쪽에서 비밀번호를 해독할지를 나타냅니다.

참인 경우 서버는 클라이언트로부터 다이제스트되지 않은 비밀번호를 수신하여 비밀번호를 다이제스트합니다.

거짓인 경우 클라이언트는 비밀번호를 다이제스트하고, 이후 다이제스트된 비밀번호를 서버에 전달합니다. 다음과 호환되지 않음 SCRAM-SHA-256

기본값은 true입니다.

writeConcern

문서

선택 사항입니다. 작업에 대한 쓰기 고려 수준입니다. 쓰기 고려 사양을 참조하세요.

authenticationRestrictions

배열

선택 사항입니다. 서버가 생성된 사용자에게 시행하는 인증 제한 사항입니다. 사용자가 서버에 연결할 수 있거나 서버가 사용자를 받아들일 수 있는 IP 주소 및 CIDR 범위의 목록을 지정합니다.

mechanisms

배열

선택 사항입니다. SCRAM 사용자 자격 증명을 생성하기 위한 특정 SCRAM 메커니즘(1개 또는 여러 개)을 지정합니다. authenticationMechanisms를 지정하면 authenticationMechanisms의 하위 집합만 지정할 수 있습니다.

유효한 값은 다음과 같습니다.

  • "SCRAM-SHA-1"

  • SHA-1 해시 함수를 사용합니다.

  • "SCRAM-SHA-256"

  • SHA-256 해시 함수를 사용합니다.

  • featureCompatibilityVersion이 4.0으로 설정되어야 합니다.

  • 다이제스트 비밀번호가 true여야 합니다.

기능 호환성 버전의 기본값은 4.0SCRAM-SHA-1SCRAM-SHA-256 모두입니다.

기능 호환성 버전의 기본값은 3.6SCRAM-SHA-1입니다.

digestPassword

부울

선택 사항입니다. 서버 또는 클라이언트 중 어느 쪽에서 비밀번호를 해독할지를 나타냅니다.

참인 경우 서버는 클라이언트로부터 다이제스트되지 않은 비밀번호를 수신하여 비밀번호를 다이제스트합니다.

거짓인 경우 클라이언트는 비밀번호를 다이제스트하고, 이후 다이제스트된 비밀번호를 서버에 전달합니다. 다음과 호환되지 않음 SCRAM-SHA-256

기본값은 true입니다.

comment

any

선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.

댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.

roles 필드에서 기본 제공 역할사용자 정의 역할을 모두 지정할 수 있습니다.

createUser가 실행되는 동일한 데이터베이스에 존재하는 역할을 지정하려면 역할의 이름과 함께 역할을 지정할 수 있습니다.

"readWrite"

또는 다음과 같이 문서로 역할을 지정할 수도 있습니다.

{ role: "<role>", db: "<database>" }

다른 데이터베이스에 존재하는 역할을 지정하려면 문서를 사용하여 역할을 지정합니다.

authenticationRestrictions 문서에는 다음 필드 포함될 수 있습니다. authenticationRestrictions 문서에 인식할 수 없는 필드가 포함되어 있으면 서버에서 오류를 발생시킵니다.

필드 이름
설명

clientSource

IP 주소 및/또는 CIDR 범위의 배열

존재하는 경우, 사용자를 인증할 때 서버는 클라이언트의 IP 주소가 지정된 목록에 있거나 목록에 있는 CIDR 범위에 속하는지 확인합니다. 클라이언트의 IP 주소가 없는 경우 서버는 사용자를 인증하지 않습니다.

serverAddress

IP 주소 및/또는 CIDR 범위의 배열

클라이언트가 연결할 수 있는 IP 주소 또는 CIDR 범위의 목록입니다. 존재하는 경우, 서버는 주어진 목록의 IP 주소를 통해 클라이언트의 연결이 승인되었는지 확인합니다. 인식할 수 없는 IP 주소를 통해 연결이 수락된 경우 서버는 사용자를 인증하지 않습니다.

중요

사용자가 인증 제한이 호환되지 않는 여러 역할을 상속하는 경우 해당 사용자는 사용할 수 없게 됩니다.

예를 들어, 사용자가 clientSource 필드가 ["198.51.100.0"]인 역할과 clientSource 필드가 ["203.0.113.0"]인 다른 역할을 상속하는 경우 서버는 사용자를 인증할 수 없습니다.

MongoDB 의 인증 에 대한 자세한 내용 은 자체 관리형 배포서버에 대한 인증을 참조하세요.

MongoDB는 생성 시 사용자에게 고유한 userId를 자동으로 할당합니다.

경고

기본값 으로 는 를 사용하는createUser 경우에도 지정된 모든 데이터를 일반 텍스트로 MongoDB 인스턴스 에 passwordPrompt() 전송합니다. TLS 전송 암호화 사용하여 에서 보낸 비밀번호를 포함하여 클라이언트와 서버 간의 통신을 createUser 보호합니다. TLS 전송 암호화 활성화하는 방법에 대한 지침은 자체 관리형 배포서버에서 TLS/SSL을 위한 MongoDB 인스턴스 구성을 참조하세요.

MongoDB는 비밀번호를 일반 텍스트로 저장하지 않습니다. 비밀번호는 클라이언트와 서버 간의 전송 시 그리고 TLS 전송 암호화가 활성화되지 않은 경우에만 취약합니다.

$external 데이터베이스에서 생성된 사용자는 예를 들어 Kerberos를 사용하는 MongoDB Enterprise 설치와 같이 MongoDB 외부에 자격 증명이 저장되어 있어야 합니다.

$external 인증 사용자(Kerberos, LDAP 또는 X.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장 을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다.

로컬 데이터베이스에서는 사용자를 생성할 수 없습니다.

사용자 이름은 한 글자 이상으로 구성되어야 하며 7MB를 초과할 수 없습니다.

userAdminuserAdminAnyDatabase 기본 제공 역할은 해당 리소스에 대한 createUsergrantRole 조치를 제공합니다.

다음 createUser 명령은 products 데이터베이스에 사용자 accountAdmin01을 생성합니다. 이 명령은 accountAdmin01admin 데이터베이스에서 clusterAdminreadAnyDatabase 역할을 부여하고 products 데이터베이스에서 readWrite 역할을 부여합니다.

메서드/명령 호출에서 암호를 직접 지정하는 대신 passwordPrompt() 메서드를 다양한 사용자 인증/관리 메서드/명령과 함께 사용하여 암호를 묻는 메시지를 표시할 수 있습니다. 그러나 이전 버전의 mongo 셸에서와 마찬가지로 비밀번호를 직접 지정할 수도 있습니다.

db.getSiblingDB("products").runCommand( {
createUser: "accountAdmin01",
pwd: passwordPrompt(),
customData: { employeeId: 12345 },
roles: [
{ role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"
],
writeConcern: { w: "majority" , wtimeout: 5000 }
} )

돌아가기

사용자 관리

이 페이지의 내용