簡介
一旦您擁有可用的 MongoDB 伺服器,您需要採取的首要且最常見的動作之一就是連線至實際的資料庫。這需要協調,以確保資料庫的配置方式允許您的用戶端連線和驗證身分。
這表示您需要了解如何透過提供伺服器位置、連線參數和正確的憑證來連線至 MongoDB 資料庫。在本指南中,我們將重點介紹如何從用戶端使用 mongo
MongoDB shell 用戶端 連線至資料庫,該用戶端主要用於與資料庫進行互動式工作階段。
在配套指南中,您可以了解如何設定 MongoDB 的身分驗證設定以符合您的需求。請考慮閱讀這兩篇文章,以全面了解如何從雙方的角度實作身分驗證。
如果您正在使用 MongoDB,請查看 Prisma 的 MongoDB 連接器!您可以使用 Prisma Client 來自信地管理生產環境 MongoDB 資料庫。
若要開始使用 MongoDB 和 Prisma,請查看我們的 從頭開始入門指南,或如何新增至現有專案。
關於 mongo
用戶端的基本資訊
mongo
用戶端是一個命令列 JavaScript 用戶端,用於連線、控制 MongoDB 資料庫伺服器並與之互動。在許多方面,它是連線並開始使用 MongoDB 資料庫的最簡單方式,因為它包含在 MongoDB 安裝中,並且可在所有熱門平台上使用。mongo
用戶端特別適用於執行初始配置,以及您想要探索資料或根據初步結果迭代查詢的互動式工作階段。
使用 mongo
shell 連線的方式取決於 MongoDB 伺服器的配置,以及可用於驗證帳戶身分的選項。在以下章節中,我們將介紹一些基本連線選項。為了清楚起見,我們將區分本機連線和遠端連線
- 本機連線:用戶端和 MongoDB 執行個體位於同一伺服器上的連線
- 遠端連線:用戶端連線至在不同電腦上執行的網路可存取 MongoDB 執行個體
讓我們先從同一部電腦連線至資料庫開始。
使用 mongo
連線至本機資料庫
在不帶任何引數的情況下,mongo
命令會嘗試連線至本機 MongoDB 執行個體。
為此,它會嘗試連線至本機迴路位址上的連接埠 27017:127.0.0.1:27017
。這是 MongoDB 伺服器在其預設配置中繫結的介面之一(MongoDB 也可能透過本機 socket 檔案存取)。
您可以輸入以下內容連線至以預設配置執行的本機 MongoDB 伺服器
mongo
成功連線後,您可能會看到相當長的一組訊息,然後是 MongoDB shell 提示符
MongoDB shell version v4.4.6connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("9cf2d126-d25f-4ed8-b159-ef3bba4fcc53") }MongoDB server version: 4.4.6---The server generated these startup warnings when booting:2021-06-04T12:26:53.374+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem2021-06-04T12:26:54.562+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted------Enable MongoDB's free cloud-based monitoring service, which will then receive and displaymetrics about your deployment (disk utilization, CPU, operation statistics, etc).The monitoring data will be available on a MongoDB website with a unique URL accessible to youand anyone you share the URL with. MongoDB may use this information to make productimprovements and to suggest MongoDB products and deployment options to you.To enable free monitoring, run the following command: db.enableFreeMonitoring()To permanently disable this reminder, run the following command: db.disableFreeMonitoring()--->
輸出顯示 mongo
命令在建立連線時產生的記錄,然後是 MongoDB 伺服器在啟動時產生的一些警告。最後,有一個關於 MongoDB 監控服務的通知,您可以選擇利用或停用它。
來自 MongoDB 伺服器的其中一個警告指出目前未啟用存取控制。這就是我們能夠在未提供憑證或其他身分驗證詳細資訊的情況下連線的原因。
如果您要連線至已配置存取控制的本機 MongoDB 伺服器,則需要提供其他資訊才能連線。您至少需要提供使用者名稱和密碼,才能使用相關的 --username
和 --password
選項進行連線
mongo --username <mongo_username> --password
將 --password
選項放在結尾,而不內嵌提供密碼,表示您希望 MongoDB 提示輸入密碼。這比在命令本身中提供密碼更安全,因為密碼可能會透過 shell 歷史記錄、處理程序列表和其他機制可見或可恢復。
MongoDB 伺服器會在連線至資料庫之前提示您輸入使用者密碼
MongoDB shell version v.4.4.6Enter password:
成功驗證身分後,您應該已連線至資料庫,並且能夠像平常一樣繼續您的工作階段。
您也可以透過傳遞連線字串來提供此資訊,而不是使用 --username
和 --password
選項
mongo "mongodb://<mongo_username>:@127.0.0.1"
由於我們已使用 <username>:
語法指出使用者有密碼,但未提供密碼,因此 mongo
shell 會提示輸入密碼。
或者,您也可以在使用一般 mongo
命令連線後,使用 db.auth
命令進行身分驗證。
首先,在不提供憑證的情況下連線至 MongoDB 資料庫
mongo
您將會像往常一樣獲得命令提示符,但如果啟用存取控制,您將無法執行許多動作,直到您驗證身分。例如,show dbs
命令可能會是空的,因為您沒有權限查詢可用的資料庫
show dbs
若要驗證身分,請先選取定義使用者的資料庫。通常,這會是 admin
資料庫
use admin
之後,使用 db.auth()
提供您的使用者名稱並請求密碼提示
db.auth({user: "<mongo_username>", passwordPrompt()})
系統會像之前一樣提示您輸入使用者帳戶的密碼
Enter password:
如果成功,伺服器將輸出 1
Enter password:1
您現在將擁有您驗證身分的使用者的常規存取權限
show dbs
admin 0.000GBconfig 0.000GBlocal 0.000GB
您可以隨時輸入以下內容,檢視與目前連線相關聯的已驗證使用者和角色清單
db.runCommand("connectionStatus")
{"authInfo" : {"authenticatedUsers" : [{"user" : "root","db" : "admin"}],"authenticatedUserRoles" : [{"role" : "userAdminAnyDatabase","db" : "admin"},{"role" : "readWriteAnyDatabase","db" : "admin"}]},"ok" : 1}
連線至遠端資料庫
如果您想要連線至遠端 MongoDB 資料庫,則在使用 mongo
shell 時必須提供一些其他詳細資訊。
具體來說,您需要包含 --host
選項,並且如果 MongoDB 伺服器正在非預設連接埠上監聽,則可能也需要 --port
選項。在幾乎所有情況下,您也需要提供 --user
和 --password
選項來驗證遠端伺服器的身分。
因此,連線至遠端 MongoDB 資料庫時,命令的基本結構如下所示
mongo --host <mongo_server_address> --port <mongo_server_port> --user <mongo_username> --password
如本機資料庫連線章節所述,將 --password
選項放在結尾,而不內嵌提供密碼,表示您希望 mongo
shell 提示輸入密碼。這比在命令本身中提供密碼更安全,因為密碼可能會透過 shell 歷史記錄、處理程序列表和其他機制可見或可恢復。
MongoDB 伺服器會在連線至資料庫之前提示您輸入使用者密碼
MongoDB shell version v.4.4.6Enter password:
成功驗證身分後,您應該已連線至資料庫,並且能夠像平常一樣繼續您的工作階段。
您也可以透過傳遞連線字串來提供此資訊,而不是使用 --host
、--port
、--username
和 --password
選項
mongo "mongodb://<mongo_username>:@<mongo_server_address>:<mongo_server_port>"
由於我們已使用 <username>:
語法指出使用者有密碼,但未提供密碼,因此 mongo
shell 會提示輸入密碼。
調整 MongoDB 伺服器的身分驗證設定
如果您想要修改規定使用者如何驗證 MongoDB 執行個體身分的規則,您可以透過修改伺服器的配置來執行此操作。您可以在本文中了解如何修改 MongoDB 的身分驗證配置。
結論
在本指南中,我們從用戶端涵蓋了 MongoDB 身分驗證。我們示範了如何使用 mongo
shell,透過各種方法連線至本機和遠端資料庫執行個體。
當您開始使用資料庫系統時,了解如何連線至各種 MongoDB 執行個體至關重要。您可能會執行不需要任何特殊身分驗證的本機 MongoDB 執行個體以進行開發,但您的預備和生產環境資料庫幾乎肯定需要身分驗證。能夠在任一情況下驗證身分將使您能夠在不同的環境中良好地工作。
如果您正在使用 MongoDB,請查看 Prisma 的 MongoDB 連接器!您可以使用 Prisma Client 來自信地管理生產環境 MongoDB 資料庫。
若要開始使用 MongoDB 和 Prisma,請查看我們的 從頭開始入門指南,或如何新增至現有專案。
常見問題
若要連線至遠端 MongoDB 資料庫,您必須在使用 mongo
shell 時包含其他詳細資訊,例如 --host
和可能的 --port
。
命令的基本結構如下所示
mongo --host <mongo_server_address> --port <mongo_server_port> --user <mongo_username> --password
您的 MongoDB 資料庫也需要設定為接受遠端連線,無論是在 配置檔案中,還是在 Atlas IP 白名單中。
假設已使用這些步驟建立管理員使用者,您可以使用類似於以下語法的內容
use admindb.auth('admin','password');
mongo
用戶端是一個命令列 JavaScript 用戶端,用於連線、控制 MongoDB 資料庫伺服器並與之互動。
您連線和使用 mongo
shell 的方式將取決於您的配置,但您通常可以透過在 shell 中輸入 mongo
來開始使用命令列。
如果需要,MongoDB 也具有來自命令列的 --help
外掛程式。
是的,您可以使用 Java 連線至 MongoDB。此程序的第一步將需要安裝 Java 驅動程式。