usersInfo
Nesta página
Definição
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Importante
Este comando tem suporte limitado em clusters M0, M2 e M5 . Para obter mais informações, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O comando tem a seguinte sintaxe:
db.runCommand( { usersInfo: <various>, showCredentials: <Boolean>, showCustomData: <Boolean>, showPrivileges: <Boolean>, showAuthenticationRestrictions: <Boolean>, filter: <document>, comment: <any> } )
Campos de comando
O comando utiliza os seguintes campos:
Campo | Tipo | Descrição |
---|---|---|
| vários | O(s) usuário(s) sobre quem retornar informações. O argumento para |
| booleano | Opcional. Defina como Por padrão, este campo é |
| booleano | Opcional. Defina como Por padrão, este campo é Novidades na versão 5.2. |
| booleano | Opcional. Defina como Por padrão, este campo é Se estiver visualizando todos os usuários, você não poderá especificar este campo. |
| booleano | Opcional. Defina como Por padrão, este campo é Se estiver visualizando todos os usuários, você não poderá especificar este campo. |
| documento | Opcional. Um documento que especifica |
| any | Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc). |
usersInfo: <various>
{ usersInfo: <various> }
O argumento para usersInfo
tem vários formatos dependendo das informações solicitadas:
Argument | Devoluções |
---|---|
| Retorna informações sobre os usuários no banco de dados onde o comando é executado.
|
| Retorne informações sobre um usuário específico que existe no banco de dados onde o comando é executado.
|
| Retorna informações sobre o usuário especificado pelo nome e banco de dados. |
{ usersInfo: [ { user: <name>, db: <db> }, ... ] } { usersInfo: [ <username1>, ... ] } | Retorna informações sobre os usuários especificados. |
| Retorna informações sobre usuários em todos os bancos de dados. |
Acesso necessário
Os usuários sempre podem ver suas próprias informações.
Para visualizar as informações de outro usuário, o usuário que executa o comando deve ter privilégios que incluam a ação viewUser
no banco de dados do outro usuário.
Saída
As seguintes informações podem ser retornadas por usersInfo
dependendo das opções especificadas:
{ "users" : [ { "_id" : "<db>.<username>", "userId" : <UUID>, "user" : "<username>", "db" : "<db>", "mechanisms" : [ ... ], "customData" : <document>, "roles" : [ ... ], "credentials": { ... }, // only if showCredentials: true "inheritedRoles" : [ ... ], // only if showPrivileges: true or showAuthenticationRestrictions: true "inheritedPrivileges" : [ ... ], // only if showPrivileges: true or showAuthenticationRestrictions: true "inheritedAuthenticationRestrictions" : [ ] // only if showPrivileges: true or showAuthenticationRestrictions: true "authenticationRestrictions" : [ ... ] // only if showAuthenticationRestrictions: true }, ... ], "ok" : 1 }
Exemplos
Ver usuários específicos
Para visualizar informações e privilégios, mas não as credenciais, do usuário "Kari"
definido no banco de dados do "home"
, execute o seguinte comando:
db.runCommand( { usersInfo: { user: "Kari", db: "home" }, showPrivileges: true } )
Para exibir um usuário que existe no banco de dados atual, você pode especificá-lo somente pelo nome. Por exemplo, se você estiver no banco de dados home
e um usuário chamado "Kari"
existir no banco de dados home
, execute o seguinte comando:
db.getSiblingDB("home").runCommand( { usersInfo: "Kari", showPrivileges: true } )
Ver vários usuários
Para visualizar informações de vários usuários, utilize um array, com ou sem os campos opcionais showPrivileges
e showCredentials
. Por exemplo:
db.runCommand( { usersInfo: [ { user: "Kari", db: "home" }, { user: "Li", db: "myApp" } ], showPrivileges: true } )
Visualizar todos os usuários de um banco de dados
Para visualizar todos os usuários no banco de dados em que o comando é executado, use um documento de comando semelhante ao seguinte:
db.runCommand( { usersInfo: 1 } )
Ao visualizar todos os usuários, você pode especificar a opção showCredentials
, mas não as opções showPrivileges
ou showAuthenticationRestrictions
.
Visualizar todos os usuários para um banco de dados que corresponda ao filtro especificado
O comando usersInfo
pode aceitar um documento do filter
para retornar informações para usuários que correspondem à condição de filtro.
Para visualizar todos os usuários no banco de dados atual que têm a função especificada, use um documento de comando semelhante ao seguinte:
db.runCommand( { usersInfo: 1, filter: { roles: { role: "root", db: "admin" } } } )
Ao visualizar todos os usuários, você pode especificar a opção showCredentials
, mas não as opções showPrivileges
ou showAuthenticationRestrictions
.
Ver todos os usuários com SCRAM-SHA-1
credenciais
O comando usersInfo
pode aceitar um documento do filter
para retornar informações para usuários que correspondem à condição de filtro.
A seguinte operação retorna todos os usuários que têm credenciais SCRAM-SHA-1
. Especificamente, o comando retorna todos os usuários em todos os bancos de dados e depois utiliza o estágio $match
para aplicar o filtro especificado aos usuários.
db.runCommand( { usersInfo: { forAllDBs: true}, filter: { mechanisms: "SCRAM-SHA-1" } } )
Ao visualizar todos os usuários, você pode especificar a opção showCredentials
, mas não as opções showPrivileges
ou showAuthenticationRestrictions
.
Omitir dados personalizados da saída
Novo na versão 5.2: para omitir os dados personalizados dos usuários da saída usersInfo
, defina a opção showCustomData
como false
.
Utilize o comando createUser
para criar um usuário denominado accountAdmin01
no banco de dados do products
:
db.getSiblingDB("products").runCommand( { createUser: "accountAdmin01", pwd: passwordPrompt(), customData: { employeeId: 12345 }, roles: [ { role: 'readWrite', db: 'products' } ] } )
O usuário contém um campo customData
de { employeeId: 12345 }
.
Para recuperar o usuário e omitir os dados personalizados da saída, execute usersInfo
com showCustomData
configurado como false
:
db.getSiblingDB("products").runCommand ( { usersInfo: "accountAdmin01", showCustomData: false } )
Saída de exemplo:
{ users: [ { _id: 'products.accountAdmin01', userId: UUID("0955afc1-303c-4683-a029-8e17dd5501f4"), user: 'accountAdmin01', db: 'products', roles: [ { role: 'readWrite', db: 'products' } ], mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ] } ], ok: 1 }