Eu quero configurar um usuário no MongoDB. Este usuário não terá acesso ao banco de dados de administrador. Mas usa admin como banco de dados de autenticação. Ele falhará ao conectar o mongoDB por este comando mongo --host localhost admin
. Em vez disso, ele pode usar este comando para se conectar ao test
banco de dados: mongo --host localhost --authenticationDatabases admin test
. Como posso restringir a permissão neste caso?
Eu tentei abaixo do comando para criar um usuário:
db.createUser({user: 'testUser', pwd: '123456', roles: [{role:'readWrite', db: 'SampleCollections'}]})
quando uso essa conta de usuário para fazer login no shell do mongo, consigo listar as coleções no admin
banco de dados. Como posso restringir o usuário apenas no SampleCollections
banco de dados não admin
?
Não precisa. Você apenas concede os direitos necessários ao usuário para o banco de dados não administrativo desejado. O usuário pode usar o banco de dados admin como banco de dados de autenticação, mesmo que o usuário não tenha acesso de leitura/gravação ao banco de dados admin.
documentação grantRolesToUser .
ATUALIZAR
Vamos criar uma instância mongodb com --auth. Faça login como admin, crie o usuário que pode lerWrite ONLY test -db, autentique-se com esse usuário, verifique se pode usar as coleções de banco de dados do administrador da lista e o que esse usuário pode fazer com o banco de dados de teste.
E o mesmo de fora:
@Zhao Yi, o que você está procurando? Espero que você encontre sua solução Aqui
Por exemplo, estou anexando um exemplo como mostrado abaixo
A explicação do código é:
username
epassword
que precisa ser criado.userAdmin
função. Essa função permite que o usuário tenha privilégios administrativos apenas no banco de dados especificado na opção db.Nota: A saída mostra que um usuário chamado Employeeadmin foi criado e esse usuário tem privilégios apenas no banco de dados Employee .