2016-10-25 136 views
0

我的問題是關於mongo shell --authenticationDatabase選項。MongoDB身份驗證數據庫目的

我被它有點思想困惑的是,我是管理數據庫,因爲這是用戶在這裏閱讀本文件後實際定義創建的用戶數據庫:https://docs.mongodb.com/manual/core/security-users/#user-management-interface

我明白我是錯誤;身份驗證數據庫是用戶具有角色的數據庫。那麼我的問題是選項「--authenicationDatabase?」的目的是什麼?看到我的情景如下。

下面的命令將連接到MyApp數據庫,並針對MYAPP數據庫

mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" myapp 

下面的命令將連接到MyApp數據庫,並針對默認MYAPP數據庫進行身份驗證身份驗證。這似乎使命令過時了。

mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" myapp 

下面的命令將對myapp數據庫進行身份驗證,但不會連接到它。爲什麼?僅僅是爲了測試憑證?

mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" 

此命令會告訴我「錯誤:身份驗證失敗。」以及我仍然想知道爲什麼我需要先前的命令來找出我的憑據是無效的。

mongo -u "bob" -p "bobspassword" myapp 

最後,就是有,我需要對一個數據庫進行驗證並連接到一個不同的像下面的命令的情況嗎?我只能連接到我已定義角色的數據庫,爲什麼我不會對我試圖連接的數據庫進行身份驗證?

mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" myotherapp 

謝謝您的洞察!

回答

0

在mongo中,您連接到的服務器並不是真正的數據庫。之後您可以更改數據庫。

代碼:

mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" 

將連接到mongod的服務器,它會使用「test」數據庫,如果別人沒有定義

下一個應該工作,因爲蒙戈從取AUTH分貝連接字符串。它也可能在配置文件中設置不同。

mongo -u "bob" -p "bobspassword" myapp 

和最後:

Lastly, is there a situation where I need to authenticate against one database and connect to a different one..

沒有

+0

我爲什麼要只連接到服務器/測試?運行'show dbs'?還要別的嗎? – Daniel

+0

也許會創建一個數據庫?我想這是有道理的。 – Daniel

+0

即默認行爲,要連接到db測試,需要在某處寫入。在mongo中,DB在第一個文檔被保存的時刻創建。 – sergiuz