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”,之后再切换至业务数据库。