Sou um novato no MongoDB, com uma instância do MongoDB em execução em uma máquina Ubuntu.
Se eu fizer login no console da máquina e executar mongo -u username -p password databasename
, tenho permissões para o banco databasename
de dados criar e remover coleções, inserir documentos e removê-los. Eu testei com sucesso essas operações.
No entanto, se eu tentar inserir um documento (no mesmo banco de dados usando as mesmas credenciais de usuário ) usando a API MongoDB de um programa Java (em execução no mesmo servidor), recebo o erro 13:
com.mongodb.MongoCommandException: Command failed with error 13:
'not authorized on databasename to execute command { insert: "collectionName" ...
Meu código Java (funciona bem quando executado em minha máquina local para outra instância do MongoDB sem autenticação):
...
ServerAddress serverAddress = new ServerAddress(serverName, portNo);
MongoCredential mongoCredential =
MongoCredential.createCredential(username, DB_NAME, password.toCharArray());
mongoClient = new MongoClient(...
DB db = mongoClient.getDB("databasename");
mongoCollection = db.getCollection("collectionName");
this.mongoCollection.insert(... <-- CAUSES EXCEPTION
....
Qual poderia ser a causa desse erro e como posso resolvê-lo?
A causa desse problema provavelmente foi um problema de configuração do servidor MongoDB , relacionado à ligação do endereço IP. Alterar 127.0.0.1 para 0.0.0.0 resolveu o problema.
Meu problema foi resolvido reiniciando o aplicativo. Estou usando o PM2 como gerenciador de processos.