Definição
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
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
Importante
Este comando não é aceito em clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
Sintaxe
O comando tem a seguinte sintaxe:
db.runCommand( { usersInfo: <various>, showCredentials: <Boolean>, showCustomData: <Boolean>, showPrivileges: <Boolean>, showAuthenticationRestrictions: <Boolean>, authenticatedMechanism: <string>, 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. |
| string | Novidades na versão 9.0. Opcional. Defina como uma string que represente um mecanismo de autenticação compatível para determinar onde Se este campo não for especificado, 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. |
| 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 dependendo das opções usersInfo 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 pode aceitar usersInfo um filter documento do 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 credenciais SCRAM-SHA-1
O comando pode aceitar usersInfo um filter documento do 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
Novidades na versão 5.2:
Para omitir os dados personalizados dos usuários da saída, defina usersInfo a showCustomData opção false como.
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 false para:
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 }