Mongo 셸의 모든 사용자 나열
이 MongoDB 기사에서는 사용자를 인증하고 Mongo 셸의 모든 사용자를 나열하고 db.getUser()
및 db getUsers()
메서드를 사용하는 방법을 배웁니다.
사용자 인증
사용자로 인증하려면 사용자는 사용자 이름, 암호 및 해당 사용자와 연결된 인증 데이터베이스를 제공해야 합니다. 따라서 동일한 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 셸의 모든 사용자 나열
모든 사용자를 나열하려면 mongosh
를 사용하여 system.users
컬렉션을 쿼리할 수 있습니다.
use admin
db.system.users.find()
system.users
컬렉션을 직접 수정하면 안 됩니다. 사용자를 관리하기 위해 지정된 사용자 관리 명령을 사용할 수 있습니다.
예를 들어 mongos
를 통해 생성된 샤드 클러스터의 모든 사용자를 나열하려면 mongos
에 연결하고 다음 명령을 실행합니다. MongoDB는 구성 서버의 admin
데이터베이스에서 mongos
를 통해 생성된 사용자를 저장합니다.
모든 샤드를 나열하려면 로컬 사용자가 해당 샤드에 직접 연결하고 다음 명령을 실행할 수 있습니다. MongoDB는 샤드 자체의 admin
데이터베이스에 shard local
사용자를 저장하는 데 사용됩니다.
이러한 shard local
사용자는 mongos
를 통해 샤드 클러스터에 추가된 사용자와 독립적입니다. Shard local
사용자는 샤드로 제한되며 mongos
에서는 사용할 수 없습니다.
MongoDB의 db.getUser()
메소드
이 메서드의 구문은 다음과 같습니다.
db.getUser(username, args)
이 메서드는 지정된 사용자에 대한 사용자 정보를 반환합니다. 사용자는 사용자의 데이터베이스에서 이 방법을 실행할 수 있습니다.
메서드가 실행 중인 데이터베이스에 있어야 합니다. db.getUser()
메소드는 다음 매개변수로 구성됩니다.
db.getUser( "<username>", {
showCredentials: <Boolean>,
showPrivileges: <Boolean>,
showAuthenticationRestrictions: <Boolean>,
filter: <document>
} )
모수 | 유형 | 설명 |
---|---|---|
username |
끈 | 정보를 검색할 사용자의 이름입니다. |
args |
문서 | Optional. A 문서specifying additional arguments. |
args
문서는 다음 필드를 지원합니다.
필드 | 유형 | 설명 |
---|---|---|
showCredentials |
부울 | 이것은 선택적 필드입니다. 사용자의 비밀번호 해시를 표시하려면 이 필드를 true 로 설정하십시오. 기본적으로 이 필드는 false 입니다. |
showPrivileges |
부울 | 이것은 선택적 필드입니다. 확장된 정보를 포함하여 사용자의 전체 권한을 보려면 이 필드를 true 로 설정하십시오. 기본적으로 이 필드는 false 입니다. 모든 사용자를 보는 경우 이 필드를 지정할 수 없습니다. |
showAuthenticationRestrictions |
부울 | 이것은 선택적 필드입니다. 사용자의 인증 제한을 표시하려면 이 필드를 true 로 설정하십시오. 기본적으로 이 필드는 false 입니다. 모든 사용자를 보는 경우 이 필드를 지정할 수 없습니다. |
filter |
문서 | This is an optional field. This 문서specifies $match stage conditions to return information for users that matches the filter conditions. |
db.getUser()
메서드는 usersInfo
명령으로 래핑됩니다.
사용자는 다른 사용자의 정보를 보려면 다른 사용자의 데이터베이스에 대한 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(<options>)
이 메서드는 데이터베이스의 모든 사용자에 대한 정보를 반환합니다. db.getUsers()
메서드는 usersInfo: 1
명령으로 래핑됩니다.
db.getUsers()
메서드는 다음 옵션을 사용합니다.
db.getUsers( {
showCredentials: <Boolean>,
filter: <document>
} )
필드 | 유형 | 설명 |
---|---|---|
showCredentials |
부울 | 이것은 선택적 필드입니다. 필드를 true 로 설정하여 사용자의 암호 해시를 표시할 수 있습니다. 기본적으로 이 필드는 false. 입니다. |
filter |
문서 | This is an optional field. This 문서specifies $match stage conditions to return information for users that matches the filter conditions. |
사용자는 다른 사용자의 정보를 보려면 다른 사용자의 데이터베이스에 대한 viewUser
작업이 있어야 합니다. 사용자는 자신의 정보를 볼 수 있습니다.
예:
지정된 필터와 일치하는 지정된 데이터베이스의 모든 사용자를 봅니다.
db.getUsers()
메서드는 필터 조건과 일치하는 사용자에 대한 정보를 반환하는 filter
문서를 허용할 수 있습니다. SCRAM-SHA-256
자격 증명이 있는 현재 데이터베이스의 모든 사용자를 보려면.
db.getUsers({ filter: { mechanisms: "SCRAM-SHA-256" } })
모든 사용자를 보는 동안 showCredentials
옵션을 지정할 수 있지만 showPrivileges
또는 showAuthenticationRestrictions
옵션은 지정할 수 없습니다.
따라서 이 MongoDB 기사의 도움으로 사용자를 인증하고 Mongo 셸의 모든 사용자를 나열하고 db.getUser()
및 db.getUsers()
메서드를 사용하는 방법을 배웠습니다.