HOWTO · MongoDB

Mongo 셸의 모든 사용자 나열

mongosh용 MongoDB 8.0 문서에 따라 사용자를 인증하는 방법, show users로 Mongo 셸의 모든 사용자를 나열하는 방법, db.getUser() 및 db.getUsers() 메서드를 사용하는 방법을 알아보세요.

이 페이지의 내용

이 MongoDB 기사에서는 사용자를 인증하는 방법, Mongo 셸의 모든 사용자를 나열하는 방법 및 db.getUser() 및 db.getUsers() 메서드를 사용하는 방법을 배웁니다. 명령과 출력은 MongoDB 8.0 문서를 따르며 MongoDB 셸인 mongosh에서 실행됩니다.

MongoDB 사용자는 데이터베이스별로 정의됩니다. 사용자는 하나의 인증 데이터베이스에 존재하며, 이 기사의 모든 명령은 특정 데이터베이스에 대해 실행됩니다. 대부분의 예시는 관리자가 보통 사용자를 만드는 admin 데이터베이스를 사용합니다.

사용자 인증하기

사용자로 인증하려면 사용자 이름, 비밀번호 및 해당 사용자와 연결된 인증 데이터베이스를 제공해야 합니다. 동일한 mongosh 세션 내에서는 사용자 간에 전환할 수 없습니다. 다른 사용자로 인증하면 세션은 인증된 두 사용자 모두의 권한을 가집니다. 사용자 간에 전환하려면 mongosh를 종료하고 다시 시작하세요.

mongosh를 사용하면 연결 중에 인증하거나 연결 후에 인증할 수 있습니다.

연결 중 인증

-u, -p 및 --authenticationDatabase 명령줄 옵션을 사용하여 mongosh를 시작합니다.

mongosh --port 27017 --authenticationDatabase "admin" -u "myUserAdmin" -p

메시지가 표시되면 비밀번호를 입력합니다.

연결 후 인증

자격 증명 없이 mongosh를 mongod 또는 mongos 인스턴스에 연결합니다.

mongosh --port 27017

mongosh에서 인증 데이터베이스(이 경우 admin)로 전환하고, db.auth() 메서드 또는 authenticate 명령을 사용하여 인증 데이터베이스에 대해 인증합니다.

use admin
db.auth("myUserAdmin", passwordPrompt()) // or cleartext password

passwordPrompt() 메서드는 비밀번호 입력을 요청합니다. 비밀번호를 문자열로 직접 지정할 수도 있지만, 비밀번호가 화면에 표시되거나 셸 기록에 유출되는 것을 방지하기 위해 passwordPrompt()를 권장합니다.

Mongo 셸의 모든 사용자 나열

셸 헬퍼 show users는 현재 데이터베이스의 모든 사용자를 나열합니다. 이는 아래의 자체 섹션에서 설명하는 db.getUsers()를 실행합니다. 먼저 사용자를 나열하려는 데이터베이스로 전환하세요 — admin에서 만든 사용자의 경우 다음과 같습니다.

use admin
show users

출력에는 사용자당 하나의 문서가 포함되며 _id, userId, user, db, roles, mechanisms와 같은 필드가 있습니다. 사용자는 데이터베이스에 속하므로, 다른 데이터베이스의 사용자를 검사하려면 데이터베이스당 한 번씩 명령을 실행하세요.

system.users 컬렉션을 직접 수정해서는 안 됩니다. 사용자를 관리하려면 db.getUser(), db.getUsers(), db.createUser()와 같이 지정된 사용자 관리 명령과 메서드를 사용하세요.

MongoDB의 db.getUser() 메서드

db.getUser() 메서드는 지정된 사용자의 사용자 정보를 반환합니다. 이 메서드는 사용자의 데이터베이스에서 실행하세요. 사용자는 해당 데이터베이스에 존재해야 하며, 사용자가 존재하지 않으면 메서드는 null을 반환합니다. 이 메서드의 구문은 다음과 같습니다.

db.getUser(username, args)

db.getUser() 메서드는 다음 매개변수로 구성됩니다.

Parameter Type Description
username string 정보를 조회할 사용자의 이름.
args document 선택 사항. 추가 인수를 지정하는 문서.

args 문서는 다음 필드를 지원합니다.

db.getUser( "<username>", {
   showCredentials: <Boolean>,
   showCustomData: <Boolean>,
   showPrivileges: <Boolean>,
   showAuthenticationRestrictions: <Boolean>,
   filter: <document>
} )
Field Type Description
showCredentials Boolean 선택 사항. 이 필드를 true로 설정하면 사용자의 비밀번호 해시가 표시됩니다. 기본적으로 이 필드는 false입니다.
showCustomData Boolean 선택 사항. 이 필드를 false로 설정하면 사용자의 customData가 출력에서 생략됩니다. 기본적으로 이 필드는 true입니다. 버전 5.2의 새로운 기능.
showPrivileges Boolean 선택 사항. 이 필드를 true로 설정하면 상속된 역할에 대한 확장 정보를 포함하여 사용자의 전체 권한 집합이 표시됩니다. 기본적으로 이 필드는 false입니다. 모든 사용자를 볼 때는 이 필드를 지정할 수 없습니다.
showAuthenticationRestrictions Boolean 선택 사항. 이 필드를 true로 설정하면 사용자의 인증 제한이 표시됩니다. 기본적으로 이 필드는 false입니다. 모든 사용자를 볼 때는 이 필드를 지정할 수 없습니다.
filter document 선택 사항. 필터 조건과 일치하는 사용자의 정보를 반환하기 위해 $match 단계 조건을 지정하는 문서.

db.getUser() 메서드는 usersInfo: <username> 명령을 래핑합니다. 다른 사용자의 정보를 보려면 다른 사용자의 데이터베이스에 대한 viewUser 액션이 있어야 합니다. 사용자는 자신의 정보를 볼 수 있습니다.

예시: 다음 작업은 accounts 데이터베이스의 예시 사용자 appClient에 대한 정보를 반환합니다.

use accounts
db.getUser("appClient")

위 예시의 출력은 아래와 같습니다.

{
   _id: 'accounts.appClient',
   userId: UUID("1c2fc1bf-c4dc-4a22-8b04-3971349ce0dc"),
   user: 'appClient',
   db: 'accounts',
   roles: [],
   mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
}

MongoDB의 db.getUsers() 메서드

db.getUsers() 메서드는 데이터베이스의 모든 사용자에 대한 정보를 반환합니다. 이는 usersInfo: 1 명령을 래핑하며 구문은 다음과 같습니다.

db.getUsers(<options>)

db.getUsers() 메서드는 다음 옵션을 받습니다.

db.getUsers( {
   showCredentials: <Boolean>,
   showCustomData: <Boolean>,
   filter: <document>
} )
Field Type Description
showCredentials Boolean 선택 사항. 이 필드를 true로 설정하면 사용자의 비밀번호 해시가 표시됩니다. 기본적으로 이 필드는 false입니다.
showCustomData Boolean 선택 사항. 이 필드를 false로 설정하면 사용자의 customData가 출력에서 생략됩니다. 기본적으로 이 필드는 true입니다. 버전 5.2의 새로운 기능.
filter document 선택 사항. 필터 조건과 일치하는 사용자의 정보를 반환하기 위해 $match 단계 조건을 지정하는 문서.

db.getUser()와 마찬가지로, 다른 사용자의 정보를 보려면 다른 사용자의 데이터베이스에 대한 viewUser 액션이 있어야 하며, 사용자는 자신의 정보를 볼 수 있습니다.

예시: db.getUsers() 메서드는 필터 조건과 일치하는 사용자의 정보를 반환하기 위해 filter 문서를 받을 수 있습니다. SCRAM-SHA-256 자격 증명을 가진 현재 데이터베이스의 모든 사용자를 보려면 다음을 실행합니다.

db.getUsers({ filter: { mechanisms: "SCRAM-SHA-256" } })

모든 사용자를 볼 때는 showCredentials 옵션을 지정할 수 있지만 showPrivileges 또는 showAuthenticationRestrictions 옵션은 지정할 수 없습니다.

이 MongoDB 기사를 통해 사용자를 인증하는 방법, Mongo 셸의 모든 사용자를 나열하는 방법, db.getUser() 및 db.getUsers() 메서드를 사용하는 방법을 배웠습니다.