參考官方文檔:https://docs.mongodb.org/v2.6/tutorial/enable-authentication/
基於版本:MongoDB 2.6
概覽
在MongoDB數據實例上開啟了訪問控制,約束了用戶必須在連接MongoDB的時候認證一下。在這個步驟中,你開啟訪問控制,然后創建的第一個用戶必須是一個administrator的用戶。這個administrator用戶用來創建其他的用戶。
注意事項
如果你在開啟訪問控制之前,創建了一個administrator用戶,那么就關閉了localhost exception,在這種情況下,你必須使用'Enable Authentication after Creating the User Administrator'的步驟來開啟訪問控制。
這里主要是說明'Enable Authentication after Creating the User Administrator的方式開啟訪問控制(即先創建第一個用戶然后開啟認證):
步驟:
1.使用無認證的方式啟動MongoDB
比如:mongod --port 27017 --dbpath c:\data\db1
2.創建administrator用戶
這個用戶有且僅有userAdminAnyDatabase這個角色的權限。
比如:創建一個用戶名為siteUserAdmin的用戶在admin數據庫中,(必須是在admin數據庫中創建)。
use admin
db.createUser(
{
user: "siteUserAdmin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
對於角色、權限以及創建用戶的命令,請參考:創建一個administrator用戶, 角色以及db.createUser()。
3.以認證的方式啟動MongoDB數據庫
mongod --auth --port 27017 --dbpath /data/db1
4.創建其他的用戶
文檔參考:https://docs.mongodb.org/v2.6/tutorial/add-user-to-database/
1.用有合適權限的用戶連接MongoDB實例
比如:使用剛才創建的administrator用戶siteUserAdmin,
mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin
2.創建一個新用戶
創建用戶語法可以參考:db.createUser()。
下面的例子是在reporting數據庫中創建一個用戶。
use reporting
db.createUser(
{
user: "reportsUser",
pwd: "12345678",
roles: [
{ role: "read", db: "reporting" },
{ role: "readWrite", db: "reporting" }
]
}
)
其中,use reporting命令,如果沒有reporting數據庫,則創建這個reporting數據庫。
如果要認證這個reportUser用戶,就必須在reporting數據庫中認證。