通過程序代碼連接實例
更新時間 2024-09-24 19:34:11
最近更新時間: 2024-09-24 19:34:11
分享文章
本頁介紹了如何通過程序代碼連接實例。
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)