連接外部應用程式
您的應用程式及驅動程式會使用連線字串來建立與 IBM Cloud® Databases for MongoDB的連線。 每一個部署都有專用的驅動程式和應用程式連線字串。 連線字串會顯示在部署 概觀的 端點 畫面中,也可以從 Cloud Databases CLI 外掛程式 及 Cloud Databases API 中擷取。
您在部署中建立的任何使用者都可以使用連線字串。 雖然您可以將管理使用者用於所有連線及應用程式,但最好特別為您要連接的應用程式建立使用者。 有關更多信息,請參閱 取得連接字串。
連接外部應用程式時,僅使用支援的驅動程式 MongoDB或者 MongoDB's特色社區支持圖書館。Cloud Databases不支援任何不支援的驅動程式MongoDB。
使用連接資訊
驅動程式連接到您的部署所需的所有資訊都位於"MongoDB"在上建立的憑證的部分服務憑證頁。 表格包含參照的明細。
| 欄位名稱 | 索引 | 說明 |
|---|---|---|
Type |
連接類型 - 用於MongoDB,它是“URI” | |
Scheme |
URI 方案 - 用於MongoDB,它是“mongodb” | |
Path |
URI 的路徑 - 用於MongoDB,它是資料庫名稱。 第一次佈建 MongoDB 實例時,使用者要連接的預設資料庫為 admin。 |
|
Authentication |
Username |
您用來連接的使用者名稱。 |
Authentication |
Password |
使用者的密碼-可能顯示為 $PASSWORD |
Authentication |
Method |
如何進行鑑別; 由驅動程式處理「直接」鑑別。 Mongo 3.6 使用 SCRAM SHA 1,而 Mongo 4.2 使用 SHA 256 |
Hosts |
0... |
要連接的主機名稱及埠 |
Composed |
0... |
結合「架構」、「鑑別」、「主機」、「路徑」及「抄本集」名稱的 URI。 |
Certificate |
Name |
用於資料庫部署的服務專屬憑證的已分配名稱 |
Certificate |
Base64 | 憑證的 base64 編碼版本。 |
0...表示陣列中可能有一或多個這些項目。
當給定在連接資訊的「composed」欄位中找到的 URI 格式的連接字串時,許多MongoDB驅動程式都能夠連接到您的部署。Cloud Databases提供高度可用的MongoDB,因此請確保在連接字串中包含所有成員。 例如:
mongodb://admin:$PASSWORD@d5eeee66-5bc4-498a-b73b-1307848f1eac.8f7bfd8f3faa4218aec56e069eb46187-0.databases.appdomain.cloud:30484,d5eeee66-5bc4-498a-b73b-1307848f1eac.8f7bfd8f3faa4218aec56e069eb46187-1.databases.appdomain.cloud:30484,d5eeee66-5bc4-498a-b73b-1307848f1eac.8f7bfd8f3faa4218aec56e069eb46187-2.databases.appdomain.cloud:30484/<database name>?authSource=admin&replicaSet=replset
replicaSet 查詢參數包含部署的抄本集名稱。 它可能是 replset。 部分驅動程式及應用程式需要個別傳入。
下列範例使用連線字串及 MongoDB Java 驅動程式 中的資訊來連接至資料庫。
public class MongodbConnect {
private static Logger log = LoggerFactory.getLogger(LoggerFactory.class);
public static void main(String[] args) {
System.setProperty("javax.net.ssl.trustStore", "path/to/keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "store_password");
// make sure you append ssl=true to the connection URI
final String mongoURI = "mongodb://user:password@host:port,host:port/?authSource=admin&replicaSet=replset&ssl=true";
MongoClient mongoClient = MongoClients.create(mongoURI);
boolean testDB = false;
// this loop will continue attempting to connect to the database until the admin database is found
while (!testDB) {
try {
// check if you can connect to the database by checking for
// the presence of the admin database. If the admin databases isn't found
// then you're not connected.
MongoIterable<String> databases = mongoClient.listDatabaseNames();
for (String name: databases) {
if (name.contains("admin")) {
System.out.println("admin found...");
testDB = true;
}
}
} catch (Exception e) {
log.info(e.getMessage());
}
}
// close connection
mongoClient.close();
}
}
下一個範例會使用連線字串及 Python 驅動程式 pymongo 中的資訊來連接至資料庫。 這只是簡單的連線範例,沒有錯誤處理或重試邏輯,可能不適用於正式作業。
import pymongo
from pymongo import MongoClient
from pymongo.errors import ConnectionFailure
client = MongoClient(
"mongodb://admin:$PASSWORD@host.databases.appdomain.cloud:30484/<database name>?authSource=adminreplicaSet=replset",
ssl=True,
ssl_ca_certs="/path/to/cert/ca-certificate.crt"
)
try:
db_list = client.list_database_names()
print("List of databases:")
print(db_list)
except ConnectionFailure as err:
print("Unable to connect to database")
此最終範例使用 MongoDB Node.js 驅動程式
const MongoClient = require("mongodb").MongoClient;
let connectionString = "mongodb://<username>:<password>@<host>:<port>,<host>:<port>/<database>?authSource=admin&replicaSet=replset";
let options = {
tls: true,
tlsCAFile: `/path/to/cert`,
useUnifiedTopology: true
};
// connects to a MongoDB database
MongoClient.connect(connectionString, options, function (err, db) {
if (err) {
console.log(err);
} else {
// lists the databases that exist in the deployment
db.db('example').admin().listDatabases(function(err, dbs) {
console.log(dbs.databases);
db.close();
});
}
});
驅動程式 TLS 和服務專屬憑證支援
Databases for MongoDB 的所有連線都已啟用 TLS 1.2,因此您用來連接的驅動程式需要能夠支援加密。
Databases for MongoDB Enterprise Edition支援下列 密碼組合:
- ECDHE-ECDSA-AES128-GCM-SHA256
- ECDHE-RSA-AES128-GCM-SHA256
- ECDHE-ECDSA-AES256-GCM-SHA384
- ECDHE-RSA-AES256-GCM-SHA384
- ECDHE-ECDSA-CHACHA20-POLY1305
- ECDHE-RSA-CHACHA20-POLY1305
- DHE-RSA-AES128-GCM-SHA256
- DHE-RSA-AES256-GCM-SHA384
您的部署還隨附服務專屬憑證,因此驅動程式可以在連線時驗證伺服器。
如需相關資訊,請參閱 Cloud Databases 憑證常見問題(FAQ)。
使用服務專屬憑證
- 從 端點 畫面或連線資訊的 Base64 欄位複製憑證資訊。
- 必要的話,請將 Base64 字串解碼為文字。
- 將憑證儲存至檔案。 (您可以使用所提供的「名稱」或您自己的檔名)。*
- 提供驅動程式或用戶端的憑證路徑。
*為了MacOS,確保您已將憑證匯入信任儲存區,並將憑證標記為 trust always。
CLI 外掛程式支援服務專屬憑證
您可以使用指令 ibmcloud cdb deployment-cacert "your-service-name",使用 CLI 外掛程式來顯示部署的已解碼憑證。 它會將 base64 解碼成文字。 將指令的輸出複製並儲存至檔案,並提供檔案的驅動程式路徑。
其他語言驅動程式
MongoDB 擁有大量的語言驅動程式。 此表格涵蓋一些最常見的語言驅動程式。 如果您要尋找更多語言,請嘗試 MongoDB.org Driver List。