2014-04-11 52 views
13

我從2.4升級到2.6,認證中斷。 This tutorial看起來很簡單,但我一直被鎖定在我自己的數據庫之外。我的情況非常簡單,我有一個Mongo服務器,需要一個用戶/密碼組合來連接。如何在2.6中將管理用戶添加到Mongo中?

首先我通過本地主機異常連接提到。然後,我創建的管理員用戶的建議:

use admin 
db.createUser(
    { 
    user: "myadmin", 
    pwd: "mysecret", 
    roles: 
    [ 
     { 
     role: "userAdminAnyDatabase", 
     db: "admin" 
     } 
    ] 
    } 
) 

現在是時候添加新用戶,以便於合理性檢查自己,我退出了殼。現在當我輸入「mongo」時失敗。這用來工作而行,它沒有看到一個用戶名密碼,我想本地主機的例外是不存在了,所以我跟着列出here說明:

mongo --port 27017 -u myadmin -p mysecret --authenticationDatabase admin 

我也得到:

MongoDB shell version: 2.6.0 
connecting to: 127.0.0.1:27017/test 
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" } 
> 

如何任何想法:

  1. 設置蒙戈2.6,所以我可以很容易地進出外殼管理數據庫(我認爲這是「系統用戶管理員」)

  2. 從遠程客戶端啓用用戶連接? (只是mongo方面,iptables不需要幫助...)

謝謝!

+1

我有這個相同的問題......超級沮喪,即使你仔細按照教程,它會失敗。 MongoDB需要認真關注其文檔。 – inorganik

回答

29

顯然「系統用戶管理員」是不夠的。在this gist

> use some_db 
> db.createUser(
    { 
     user: "mongouser", 
     pwd: "someothersecret", 
     roles: ["readWrite"] 
    } 
) 

更多細節:創建一個root用戶:

> db.createUser({user:"someadmin",pwd:"secret", roles:[{role:"root",db:"admin"}]}) 

添加您的數據庫用戶。關於SO的要點和更好的答案的評論 - 我不是系統管理員

+1

如果你不需要'root'的極端一切,'userAdmin'角色應該也能工作。 http://docs.mongodb.org/manual/reference/built-in-roles/#userAdmin – twiz

1

1)您分配admin user-userAdminAnyDatabase的角色 - 沒有無限制特權。這只是一個允許在任何數據庫上創建和管理用戶的角色。顯然,默認情況下,它受限於執行某些與管理數據庫用戶無關的命令(例如從日誌中獲取啓動警告,查詢服務器狀態等)。

您可以像託尼建議的那樣使用「根」角色。如果您打算使用root帳戶進行設置和管理,然後只有幾個基本的讀/寫特權帳戶與數據庫交談,這可能是最有意義的。

2)通常,連接客戶端只需要在連接客戶端代碼後調用db.authenticate()函數即可。根據您用於客戶端的驅動程序/語言,有多種不同的方法來完成此操作。節點。JS驅動程序代碼是非常典型的:我得到一個

`com.mongodb.CommandFailureException:` 

在BuildConfig.groovy的依賴小節添加

compile 'org.mongodb:mongo-java-driver:2.13.1' 

但是解決了該問題http://mongodb.github.io/node-mongodb-native/api-generated/db.html#authenticate

0

即使以下@託尼的方法之後。

相關問題