Java示例
通过Java连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具有更高的安全性。文档数据库服务新实例默认关闭SSL数据加密。SSL连接实现了数据加密功能,但同时也会增加网络连接响应时间和CPU消耗。
- 参数说明。
参数 | 说明 |
---|---|
username | 当前用户名。 |
password | 当前用户的密码。 |
instance_ip | 如果通过弹性云服务器连接,“instance_ip”是主机IP,即“基本信息”页面该实例的“IPV4内网地址”。如果通过连接了公网的设备访问,“instance_ip”为该实例已绑定的“弹性公网IP”。如果需要配置高可用地址,即“基本信息”页面该实例的“数据库连接”。 |
instance_port | 端口,默认8030,集群默认9030。当前端口,参考“基本信息”页面该实例的“数据库端口”。 |
database_name | 数据库名,即需要连接的数据库名。 |
authSource | 鉴权用户数据库,取值为admin。 |
ssl | 连接模式,值为true代表是使用ssl连接模式。 |
- Maven配置。
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.10</version>
</dependency>
</dependencies>
- 无证书连接。
public class Connector {
public static void main(String[] args) {
try {
ConnectionString connString = new ConnectionString("mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin");
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(connString)
.retryWrites(true)
.build();
MongoClient mongoClient = MongoClients.create(settings);
MongoDatabase database = mongoClient.getDatabase("admin");
BsonDocument command = new BsonDocument("ping", new BsonInt64(1));
Document commandResult = database.runCommand(command);
System.out.println("Connect to database successfully");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Connect failed");
}
}
}
- 使用SSL证书连接。
使用keytool工具配置CA证书:
keytool -importcert -trustcacerts -file <path to certificate authority file> -keystore <path to trust store> -storepass <password>
在程序中设置JVM 系统属性以指向正确的信任库和密钥库:
System.setProperty("javax.net.ssl.trustStore","<path to trust store>");
System.setProperty("javax.net.ssl.trustStorePassword","<password>");
Java Code:
public class Connector {
public static void main(String[] args) {
try {
System.setProperty("javax.net.ssl.trustStore", "./conf/certs.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
ConnectionString connString = new ConnectionString("mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&ssl=true");
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(connString)
.applyToSslSettings(builder -> builder.enabled(true))
.applyToSslSettings(builder -> builder.invalidHostNameAllowed(true))
.build();
MongoClient mongoClient = MongoClients.create(settings);
MongoDatabase database = mongoClient.getDatabase("admin");
BsonDocument command = new BsonDocument("ping", new BsonInt64(1));
Document commandResult = database.runCommand(command);
System.out.println("Connect to database successfully");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Connect failed");
}
}
}
Python示例
- 安装pymongo。
pip3 install pymongo
- 无证书连接。
import sys
from pymongo import MongoClient
uri="mongodb://root:password@ip:port/admin?authSource=admin"
client = MongoClient(uri,connectTimeoutMS=5000)
ret = client.admin.command('ping')['ok']
if ret:
print('ping successfully!')
else:
print('ping failed!')
sys.exit(1)
- 使用SSL证书连接。
import sys
import ssl
from pymongo import MongoClient
uri="mongodb://root:password@ip:port/admin?authSource=admin"
client = MongoClient(uri,connectTimeoutMS=5000,ssl=True, ssl_cert_reqs=ssl.CERT_REQUIRED,ssl_match_hostname=False,ssl_ca_certs=${path to certificate authority file})
ret = client.admin.command('ping')['ok']
if ret:
print('ping successfully!')
else:
print('ping failed!')
sys.exit(1)