【问题标题】:MongoDB Atlas - Java connection not workingMongoDB Atlas - Java 连接不起作用
【发布时间】:2019-08-11 15:13:30
【问题描述】:

我正在尝试从 java 连接到 mongodb atlas 集群,出现以下错误:

Caused by: com.mongodb.MongoCommandException: Command failed with error 8000 (AtlasError): 'Authentication failed.' on server cluster0-shard-00-00-wgrdw.gcp.mongodb.net:27017. The full response is {"ok": 0, "errmsg": "Authentication failed.", "code": 8000, "codeName": "AtlasError"}
at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:179)
at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:299)
at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:255)
at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83)
at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33)
at com.mongodb.internal.connection.SaslAuthenticator.sendSaslStart(SaslAuthenticator.java:130)
at com.mongodb.internal.connection.SaslAuthenticator.access$100(SaslAuthenticator.java:40)
at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:54)
... 23 more

我的地图集配置:

  • 用户:admin,密码:...
  • ip 白名单:0.0.0.0/0(用于测试目的)
  • mongodb版本:4.0.6
  • java驱动:implementation (group: 'org.mongodb', name: 'mongo-java-driver', version: '3.10.1')

Java 代码:

List<ServerAddress> seeds = new ArrayList<>();
        seeds.add(new ServerAddress("cluster0-shard-00-00-wgrdw.gcp.mongodb.net", 27017));
        seeds.add(new ServerAddress("cluster0-shard-00-01-wgrdw.gcp.mongodb.net", 27017));
        seeds.add(new ServerAddress("cluster0-shard-00-02-wgrdw.gcp.mongodb.net", 27017));

        MongoCredential credential = MongoCredential.createCredential(USER, "vehicle-data", PWD.toCharArray());

        MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
        //build the connection options
        builder.maxConnectionIdleTime(60000);//set the max wait time in (ms)
        builder.sslEnabled(true);
        MongoClientOptions opts = builder.build();

        MongoClient mongoClient = new MongoClient(seeds, credential, opts);

        MongoDatabase database = mongoClient.getDatabase("vehicle-data");
        MongoCollection<Document> segments = database.getCollection("road-segments");
        // Delete All documents from collection Using blank BasicDBObject
        segments.deleteMany(new BasicDBObject());

有人知道我错过了什么吗?

【问题讨论】:

标签: mongodb mongodb-atlas


【解决方案1】:

解决了(在 atlas 帮助台的帮助下):

将服务器/节点配置更改为:

MongoClientURI uri = new MongoClientURI(
                "" +
                        "mongodb://admin:<pwd>@" +
                        "cluster0-shard-00-00-wgrdw.gcp.mongodb.net:27017," +
                        "cluster0-shard-00-01-wgrdw.gcp.mongodb.net:27017," +
                        "cluster0-shard-00-02-wgrdw.gcp.mongodb.net:27017/vehicle-data?" +
                        "ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true" +
                        ""
        );
        MongoClient mongoClient = new MongoClient(uri);
        MongoDatabase database = mongoClient.getDatabase("vehicle-data");

现在可以了

【讨论】:

    猜你喜欢
    • 2019-12-04
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2020-01-29
    • 2020-08-16
    • 1970-01-01
    • 2020-07-07
    • 2019-12-10
    相关资源
    最近更新 更多