文档首页> > 最佳实践> 连接DDS实例的常用方式

连接DDS实例的常用方式

分享
更新时间: 2019-03-30 14:11

本节介绍了三种连接DDS实例的方式:

  • mongo shell连接
  • python mongo客户端
  • java mongo客户端

mongo shell连接

  • 前提条件
    1. 连接数据库的弹性云服务器必须和DDS实例之间网络互通,可以使用curl命令连接DDS实例服务端的IP和端口号,测试网络连通性。

      curl ip:port

      返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。

    2. MongoDB官网,下载客户端安装包。解压后获取其中的“mongo”文件,并上传到弹性云服务器。
    3. 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。
  • 连接命令
    • SSL开启

      ./mongo ip:port --authenticationDatabase admin -u username -p password --ssl --sslCAFile $path to certificate authority file --sslAllowInvalidHostnames

    • SSL关闭

      ./mongo ip:port --authenticationDatabase admin -u username -p password

  • 注意事项
    1. 如果开启SSL,连接命令中必须包含“--ssl”和“--sslCAFile”选项。
    2. MongoDB客户端版本,最好与所选的DDS实例的版本号一致,否则,可能出现版本间不兼容的问题。
    3. 数据库认证“--authenticationDatabase”必须为“admin”,rwuser用户必须要在admin上认证。

更多信息,请参见《文档数据库服务快速入门》中各实例类型下“连接实例”的内容。

python mongo客户端

  • 前提条件
    1. 连接数据库的弹性云服务器必须和DDS实例之间网络互通,可以使用curl命令连接DDS实例服务端的IP和端口号,测试网络连通性。

      curl ip:port

      返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。

    2. 在弹性云服务器上安装Python以及第三方安装包pymongo。推荐使用pymongo2.8版本。
    3. 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。
  • 连接代码
    • SSL开启
      import ssl
      from pymongo import MongoClient
      conn_urls="mongodb://rwuser:rwuserpassword@ip:port/{mydb}?authSource=admin"
      connection = MongoClient(conn_urls,connectTimeoutMS=5000,ssl=True, ssl_cert_reqs=ssl.CERT_REQUIRED,ssl_match_hostname=False,ssl_ca_certs=${path to certificate authority file})
      dbs = connection.database_names()
      print "connect database success! database names is %s" % dbs
    • SSL关闭
      import ssl
      from pymongo import MongoClient
      conn_urls="mongodb://rwuser:rwuserpassword@ip:port/{mydb}?authSource=admin"
      connection = MongoClient(conn_urls,connectTimeoutMS=5000)
      dbs = connection.database_names()
      print "connect database success! database names is %s" % dbs
  • 注意事项

    URL中的认证数据库必须为“admin”,即“authSource=admin”。

java mongo客户端

  • 前提条件
    1. 连接数据库的弹性云服务器必须和DDS实例之间网络互通,可以使用curl命令连接DDS实例服务端的IP和端口号,测试网络连通性。

      curl ip:port

      返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。

    2. 下载mongo jar包。
    3. 在弹性云服务器上安装jdk。
    4. 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。
  • 连接代码

    用keytool工具手动生成trustStore:

    keytool -import -file /var/chroot/mongodb/CA/ca.crt -keystore /home/Mike/jdk1.8.0_112/jre/lib/security/mongostore -storetype pkcs12 -storepass test123

    说明:
    • “/var/chroot/mongodb/CA/ca.crt”为根证书路径。
    • “/home/Mike/jdk1.8.0_112/jre/lib/security/mongostore”为生成的trustStore的路径。
    • “test123”为trustStore的密码。
    • SSL开启
      import java.util.ArrayList;
      import java.util.List;
      import org.bson.Document;
      import com.mongodb.MongoClient;
      import com.mongodb.Mong**dential;
      import com.mongodb.ServerAddress;
      import com.mongodb.client.MongoDatabase;
      import com.mongodb.client.MongoCollection;
      import com.mongodb.MongoClientURI;
      import com.mongodb.MongoClientOptions;
      public class MongoDBJDBC {
      public static void main(String[] args){
            try {
                    System.setProperty("javax.net.ssl.trustStore", "/home/Mike/jdk1.8.0_112/jre/lib/security/mongostore");
                    System.setProperty("javax.net.ssl.trustStorePassword", "test123");
                    ServerAddress serverAddress = new ServerAddress("ip", port);
                    List addrs = new ArrayList();
                    addrs.add(serverAddress);
                    Mong**dential credential = Mong**dential.createScramSha1Credential("rwuser", "admin", "!rwuserPassword".toCharArray());
                    List credentials = new ArrayList();
                    credentials.add(credential);
                    MongoClientOptions opts= MongoClientOptions.builder()
                    .sslEnabled(true)
                    .sslInvalidHostNameAllowed(true)
                    .build();
                    MongoClient mongoClient = new MongoClient(addrs,credentials,opts);
                    MongoDatabase mongoDatabase = mongoClient.getDatabase("testdb");
                    MongoCollection collection = mongoDatabase.getCollection("testCollection");
                    Document document = new Document("title", "MongoDB").
                    append("description", "database").
                    append("likes", 100).
                    append("by", "Fly");
                    List documents = new ArrayList();
                    documents.add(document);
                    collection.insertMany(documents);
                    System.out.println("Connect to database successfully");
                    } catch (Exception e) {
                    System.err.println( e.getClass().getName() + ": " + e.getMessage() );
               }
            }
      }

      样例代码:

      javac -cp .:mongo-java-driver-3.2.0.jar MongoDBJDBC.java

      java -cp .:mongo-java-driver-3.2.0.jar MongoDBJDBC

    • SSL关闭
      import java.util.ArrayList;
      import java.util.List;
      import org.bson.Document;
      import com.mongodb.MongoClient;
      import com.mongodb.Mong**dential;
      import com.mongodb.ServerAddress;
      import com.mongodb.client.MongoDatabase;
      import com.mongodb.client.MongoCollection;
      import com.mongodb.MongoClientURI;
      import com.mongodb.MongoClientOptions;
      public class MongoDBJDBC {
      public static void main(String[] args){
            try {
                    ServerAddress serverAddress = new ServerAddress("ip", port);
                    List addrs = new ArrayList();
                    addrs.add(serverAddress);
                    Mong**dential credential = Mong**dential.createScramSha1Credential("rwuser", "admin", "!rwuserPassword".toCharArray());
                    List credentials = new ArrayList();
                    credentials.add(credential);
                    MongoClient mongoClient = new MongoClient(addrs,credentials);
                    MongoDatabase mongoDatabase = mongoClient.getDatabase("testdb");
                    MongoCollection collection = mongoDatabase.getCollection("testCollection");
                    Document document = new Document("title", "MongoDB").
                    append("description", "database").
                    append("likes", 100).
                    append("by", "Fly");
                    List documents = new ArrayList();
                    documents.add(document);
                    collection.insertMany(documents);
                    System.out.println("Connect to database successfully");
                    } catch (Exception e) {
                    System.err.println( e.getClass().getName() + ": " + e.getMessage() );
               }
              }
      }
  • 注意事项
    1. SSL方式连接,需要手动生成trustStore文件。
    2. 认证数据库必须为“admin”,之后再切换至业务数据库。
如果您喜欢这篇文档,您还可以:

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区