mongodb - Cosmos DB 错误 : com. mongodb.MongoCommandException:命令失败,错误 11: 'Database account is not found'

标签 mongodb authentication ssl azure-cosmosdb

我在我的 Azure 订阅中创建了一个 Cosmos DB(使用 Mongo API)。

现在尝试使用我现有的代码连接到 CosmosDB 以连接到 mongo DB。我只是更改代码以创建 mongo 客户端。

我使用从 Cosmos DB -> 连接字符串获得的连接字符串创建了 Mongo 客户端。

微软提供的试用版Cosmos DB同样适用。 它可以从 https://azure.microsoft.com/en-us/try/cosmosdb 创建.

但它不适用于我在订阅中创建的 Cosmos DB。

我得到以下错误:

com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=null, userName='[myusername]', source='admin', password=<hidden>, mechanismProperties={}}
at com.mongodb.connection.SaslAuthenticator.wrapInMongoSecurityException(SaslAuthenticator.java:157) ~[mongo-java-driver-3.4.2.jar:?]
at com.mongodb.connection.SaslAuthenticator.access$200(SaslAuthenticator.java:37) ~[mongo-java-driver-3.4.2.jar:?]
at com.mongodb.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:66) ~[mongo-java-driver-3.4.2.jar:?]
at com.mongodb.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:44) ~[mongo-java-driver-3.4.2.jar:?]
at com.mongodb.connection.SaslAuthenticator.doAsSubject(SaslAuthenticator.java:162) ~[mongo-java-driver-3.4.2.jar:?]
at com.mongodb.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:44) ~[mongo-java-driver-3.4.2.jar:?]
at com.mongodb.connection.DefaultAuthenticator.authenticate(DefaultAuthenticator.java:32) ~[mongo-java-driver-3.4.2.jar:?]
at com.mongodb.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:109) ~[mongo-java-driver-3.4.2.jar:?]
at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:46) ~[mongo-java-driver-3.4.2.jar:?]
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:116) ~[mongo-java-driver-3.4.2.jar:?]
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113) [mongo-java-driver-3.4.2.jar:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_171]


Caused by: com.mongodb.MongoCommandException: Command failed with error 11: 'Database account is not found' on server [my cosmosdb name].documents.azure.com:10255. The full response is { "_t" : "OKMongoResponse", "ok" : 0, "code" : 11, "errmsg" : "Database account is not found", "$err" : "Database account is not found" }
    at com.mongodb.connection.CommandHelper.createCommandFailureException(CommandHelper.java:170) ~[mongo-java-driver-3.4.2.jar:?]
    at com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:123) ~[mongo-java-driver-3.4.2.jar:?]
    at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32) ~[mongo-java-driver-3.4.2.jar:?]
    at com.mongodb.connection.SaslAuthenticator.sendSaslContinue(SaslAuthenticator.java:121) ~[mongo-java-driver-3.4.2.jar:?]
    at com.mongodb.connection.SaslAuthenticator.access$100(SaslAuthenticator.java:37) ~[mongo-java-driver-3.4.2.jar:?]
    at com.mongodb.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:63) ~[mongo-java-driver-3.4.2.jar:?]
    ... 9 more

我的 Azure 门户上是否缺少任何配置???

最佳答案

您可以禁用防火墙,但这会让您暴露在外。更好地启用对工作站的访问:

  1. 转到名为防火墙和虚拟网络的 Azure Cosmos DB 菜单。

Firewall and virtual networks

  1. 选择选定的网络

  2. 点击建议的选项+ 添加我当前的 IP (xx.xx.xx.xx) 这基本上会自动将您工作站的 Internet IP 添加到您的 MongoDB/CosmosDB 允许的客户端 IP .

  3. 转到名为快速启动 的 Azure Cosmos DB 菜单。在那里,您将获得连接到数据库的替代方案。

关于mongodb - Cosmos DB 错误 : com. mongodb.MongoCommandException:命令失败,错误 11: 'Database account is not found',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51418709/

相关文章:

java - 使用 MongoDB 进行单元测试

android - 通过 Android 的 AccountManager 类进行 Twitter 身份验证

tomcat - Tomcat 中的多个 HTTPS 连接器使用不同的证书

c# - HttpWebRequest 将凭据传递给下一个 HttpWebRequest

c# - ASP.NET 使用身份验证 header 将 JSON 数据发布到 HTTP API

ssl - curl 说 OpenSSL SSL_connect : SSL_ERROR_ZERO_RETURN in connection to s3. ap-south-1.amazonaws.com:443

ssl - OpenShift 和 Jekyll Cartridge Force SSL

java - 如何克服这个错误 "com.mongodb.diagnostics.logging.JULLogger log"

mongodb - 如何在 Mongodb 聚合框架中将值转换为字段?

node.js - NodeJS - 在 res.render() 之后快速重新加载页面