Estou mais familiarizado com o MySQL, mas no meu novo local de trabalho, tenho que cuidar de um banco de dados MongoDB (MongoDB 4.2.18 com Mongosh 1.1.9 rodando no Ubuntu 18.04.6 - sim, é antigo; a atualização é um problema para outro dia). Não sei nada sobre MongoDB. Infelizmente, a pessoa que o criou não deixou nenhuma documentação. Agora preciso cuidar disso.
O que eu tenho é um nome de usuário e uma senha. Com isso, posso fazer o login assim:
mongosh --port 27017 --authenticationDatabase "admin" -u "XXX" -p
Posso listar todos os bancos de dados fazendo show databases
. Mas não consigo executar o comando show users
:
admin> show users
MongoServerError: not authorized on admin to execute command { usersInfo: 1, lsid: { id: UUID("b2c4e061-1b54-4b27-bdf2-bef330b38b4d") }, $db: "admin" }
Tentei então obter uma lista de usuários. E acho que este é o comando para fazer isso:
admin> show collections
system.users
system.version
admin> db.system.users.find().pretty ()
MongoServerError: not authorized on admin to execute command { find: "system.users", filter: {}, lsid: { id: UUID("1801ce09-5c09-44eb-9b04-86eb35817eaa") }, $db: "admin" }
Juntos, parece que minha conta não é uma conta de administrador. Isso estaria correto?
Em caso afirmativo, é possível criar uma nova conta com privilégios totais de administrador? Eu tenho sudo
acesso na máquina host. Se sim, como eu faria isso?
Obrigado!
Edite seu arquivo de configuração (normalmente
/etc/mongod.conf
) para esteComo precaução para evitar conexões não autorizadas, você também pode definir
Em seguida, reinicie o
mongod
serviço. Agora você pode se conectar come você tem todos os privilégios no banco de dados. Altere a senha e/ou credenciais do usuário
XXX
ou crie um novo usuário administrador. Você pode verificar o comando usersInfo da credencial existente .Reverta as alterações de configuração e reinicie
mongod
novamente.Sim, é uma conta de administrador... Você só precisa mudar para o banco de dados admin, onde estão as informações do usuário. Então digite "use admin" + enter. Você sempre pode verificar qual banco de dados você é, basta digitar "db" + enter.
Com o seu problema com o mongodump. Os parâmetros --db= e/ou --authenticationDatabase= resolverão seu problema (dependendo do seu problema). Use mongodump --help
Para questionar como ver se sua função é admin, use db.getUser("admin"). Confira aqui!