• 沒有找到結果。

2.2 连接集群实例

2.2.5 通过程序代码连接集群实例

2.2.5.1 Java 示例

通过Java连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中 使用SSL证书连接通过了加密功能,具有更高的安全性。DDS新实例默认关闭SSL数据 加密,开启SSL请参考设置SSL数据加密。SSL连接实现了数据加密功能,但同时也会 增加网络连接响应时间和CPU消耗,不建议开启SSL数据加密。

前提条件

用户需要具备以下技能:

● 熟悉计算机基础知识。

● 了解Java编程语言。

驱动获取及使用

Jar驱动下载地址:https://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/3.0.4/

● 使用指南请参考:https://mongodb.github.io/mongo-java-driver/4.2/driver/

getting-started/installation/

使用 SSL 证书连接

说明

该方式属于SSL连接模式,需要下载SSL证书,通过证书校验并连接数据库。

您可以在“实例管理”页面,单击实例名称进入“基本信息”页面,单击“数据库信息”模块

“SSL”处的 ,下载根证书或捆绑包。

通过Java连接集群实例时,代码中的Java链接格式如下:

mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?

authSource=admin&ssl=true

2-18 参数说明

参数 说明

<username> 当前用户名。

<password> 当前用户的密码。

<instance_ip> 如果通过弹性云服务器连接,“instance_ip”是主机IP,即

“基本信息”页面该实例的“内网地址”。

如果通过连接了公网的设备访问,“instance_ip”为该实例已 绑定的“弹性公网IP”。

<instance_port> 端口,默认8635,当前端口,参考“基本信息”页面该实例的

“数据库端口”。

<database_name

> 数据库名,即需要连接的数据库名。

authSource 鉴权用户数据库,取值为admin。

ssl 连接模式,值为true代表是使用ssl连接模式。

连接集群的Java代码,可参考以下示例:

import com.mongodb.ConnectionString;

import com.mongodb.reactivestreams.client.MongoClients;

import com.mongodb.reactivestreams.client.MongoClient;

import com.mongodb.reactivestreams.client.MongoDatabase;

import com.mongodb.MongoClientSettings;

public class MyConnTest {

final public static void main(String[] args) { try {

// set ssl

ConnectionString connString = new ConnectionString("mongodb://

rwuser:<password>@192.*.*.*:8635,192.*.*.*:8635/test?authSource=admin&ssl=true");

MongoClientSettings settings = MongoClientSettings.builder() .applyConnectionString(connString)

.retryWrites(true) .build();

MongoClient mongoClient = MongoClients.create(settings);

MongoDatabase database = mongoClient.getDatabase("test");

System.out.println("Connect to database successfully");

} catch (Exception e) { e.printStackTrace();

System.out.println("Test failed");

} }}

无证书连接

<username> 当前用户名。

<password> 当前用户的密码。

<instance_ip> 如果通过弹性云服务器连接,“instance_ip”是主机IP,即

“基本信息”页面该实例的“内网地址”。

如果通过连接了公网的设备访问,“instance_ip”为该实例已 绑定的“弹性公网IP”。

<instance_port> 端口,默认8635,当前端口,参考“基本信息”页面该实例的

“数据库端口”。

<database_name

> 数据库名,即需要连接的数据库名。

authSource 鉴权用户数据库,取值为admin。

连接集群的Java代码,可参考以下示例:

import com.mongodb.ConnectionString;

import com.mongodb.reactivestreams.client.MongoClients;

import com.mongodb.reactivestreams.client.MongoClient;

import com.mongodb.reactivestreams.client.MongoDatabase;

import com.mongodb.MongoClientSettings;

public class MyConnTest {

final public static void main(String[] args) { try {

// no ssl

ConnectionString connString = new ConnectionString("mongodb://

rwuser:<password>@192.*.*.*:8635,192.*.*.*:8635/test?authSource=admin");

MongoClientSettings settings = MongoClientSettings.builder() .applyConnectionString(connString)

.retryWrites(true) .build();

MongoClient mongoClient = MongoClients.create(settings);

MongoDatabase database = mongoClient.getDatabase("test");

System.out.println("Connect to database successfully");

} catch (Exception e) { e.printStackTrace();

System.out.println("Test failed");

} }}

2.2.5.2 Python 示例

本章节主要介绍通过Python语言的MongoDB客户端连接集群实例的方法。

前提条件

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”。

● SSL方式连接,需要手动生成trustStore文件。

● 认证数据库必须为“admin”,之后再切换至业务数据库。

3 副本集快速入门