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() 메서드를 사용하는 방법을 배웠습니다.