Eu tinha um banco de dados mongodb 2.2 com autenticação habilitada. mas depois de atualizar para 2.4, meu usuário administrador não pode fazer login em nenhum banco de dados que não seja o banco de dados administrativo. Eu o removi system.users
e criei outro usuário administrador com:
db.addUser( { user: "admin", pwd: "123456", roles: [ "userAdminAnyDatabase" ] } )
Mas, novamente, não consigo fazer login em nenhum banco de dados, exceto no banco de dados administrativo. Alguém pode ajudar?
A resposta curta é, pelo menos para o usuário que você lista: é assim que deve funcionar com o novo modelo de privilégio de usuário em 2.4+
Explicar:
A função userAdminAnyDatabase significa que o usuário que você criou agora poderá conceder acesso (para si ou para qualquer outro usuário) a qualquer outro banco de dados, daí a designação na documentação como "superusuário". No entanto, isso não concede automaticamente ao usuário administrador permissão de leitura/gravação em todos esses bancos de dados (embora possa concedê-los a eles próprios). Portanto, esse usuário não pode autenticar em nada além do banco de dados admin, mas, ao fazê-lo, pode conceder as permissões relevantes em outro lugar.
Acho que o que você pode estar procurando é a função readWriteAnyDatabase , embora eu recomende usar essa função específica com moderação (se houver) e, em vez disso, conceder acesso conforme necessário, para maior segurança.
Eu realmente não posso falar sobre as permissões do usuário antes da remoção, porque elas não foram listadas, apenas a função do novo usuário.