我是 MongoDB 新手,在 Ubuntu 机器上运行 MongoDB 实例。
如果我登录到机器的控制台并运行,mongo -u username -p password databasename
我有权允许数据库databasename
创建和删除集合、插入文档并删除它们。我已经成功地测试了这些操作。
但是,如果我尝试使用来自 Java 程序(在同一台服务器上运行)的 MongoDB API 插入文档(使用相同的用户凭据插入到同一数据库中),则会收到错误 13:
com.mongodb.MongoCommandException: Command failed with error 13:
'not authorized on databasename to execute command { insert: "collectionName" ...
我的 Java 代码(在我的本地机器上为另一个没有身份验证的 MongoDB 实例运行时运行良好):
...
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
....
此错误的原因可能是什么,我该如何解决?
此问题的原因可能是与 IP 地址绑定有关的MongoDB 服务器配置问题。将 127.0.0.1 更改为 0.0.0.0解决了该问题。
我的问题通过重新启动应用程序得到解决。我正在使用 PM2 作为流程管理器。