官網:http://www.runoob.com/mongodb/mongodb-window-install.htmlhtml
因爲是在window下,因此我下載的是mongodb-win32-x86_64-2008plus-ssl-3.2.7-signed.msi,和普通安裝軟件exe同樣,一直點下一步,中途改改安裝路徑。mongodb
安裝以後,還須要配置,好比數據庫的數據安裝路徑,日誌路徑等等。shell
MongoDB將數據目錄存儲在 db 目錄下。可是這個數據目錄不會主動建立,須要咱們在安裝完成後須要手動建立。數據庫
爲日誌文件,數據文件和配置文件建立目錄windows
配置文件目錄:D:\MongoData\config\mongod.cfg函數
日誌文件目錄:D:\MongoData\dblog\spa
數據文件目錄:D:\MongoData\db\rest
接着再配置mongod.cfg
日誌
systemLog: destination: file path: D:\MongoData\dblog\mongod.log logAppend: true storage: journal: enabled: true dbPath: D:\MongoData\db net: port: 27017 #security: #authorization: enabled
配置好上面後,在到cmd
中執行(使用管理員權限):code
D:\Program Files\MongoDB\Server\3.2\bin>mongod.exe --config "D:\MongoData\config\mongod.cfg" --install
安裝成功
net start MongoDB
服務成功啓動
能夠看看日誌文件:後來去查看日誌文件: D:\MongoData\dblog\mongod.log
net stop MongoDB
兩種方式:
一、 D:\Program Files\MongoDB\Server\3.2\bin> mongod --config D:\MongoData\config\mongod.cfg --remove
二、在系統管理員窗口輸入:sc delete MongoDB
一、MongoDB是沒有默認管理員帳號,因此要先添加管理員帳號,再開啓權限認證。
二、切換到admin數據庫,添加的帳號纔是管理員帳號。
三、用戶只能在用戶所在數據庫登陸,包括管理員帳號。
四、管理員能夠管理全部數據庫,可是不能直接管理其餘數據庫,要先在admin數據庫認證後才能夠。
在admin數據庫中,添加一個用戶並賦予userAdminAnyDatabase
角色。
例如,下面是在admin數據庫中建立一個名爲myUserAdmin
用戶。
注意:你建立用戶的這個數據庫(這裏就是admin數據庫)是用戶認證數據庫, 儘管用戶是在這個數據庫認證,而用戶又有其餘數據庫的角色;即,用戶認證數據庫不限制用戶權限。
在window
管理員下啓動cmd
,而且鏈接上mongodb
,
鏈接命令:D:\Program Files\MongoDB\Server\3.2\bin>mongo.exe
建立用戶命令:
use admin db.createUser( { user: "myUserAdmin", pwd: "mypass123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) #結果 Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
查看用戶
show users
db.system.users.find()
配置文件:D:\MongoData\config\mongod.cfg
注意:要開啓配置文件的authorization的權限
systemLog: destination: file path: D:\MongoData\dblog\mongod.log logAppend: true storage: journal: enabled: true dbPath: D:\MongoData\db net: port: 27017 security: authorization: enabled
接着就是重啓mongod
實例。說明了就是重啓mongodb服務。
一、一旦通過認證的用戶管理員,可使用db.createUser()去建立額外的用戶,你能夠分配mongodb內置的角色或用戶自定義的角色給用戶。
二、這個myUserAdmin用戶僅僅只有特權去管理用戶和角色,myUserAdmin,若是你試圖執行其餘任何操做,例如在test數據庫中的foo集合中去讀數據,mongodb將返回錯誤。
三、你建立用戶的數據庫(這裏就是test數據庫)是該用戶認證數據庫。儘管用戶認證是這個數據庫,用戶依然能夠有其餘數據庫的角色。即用戶認證數據庫不限制用戶權限。
MongoDB shell version: 3.2.7 connecting to: test > use admin switched to db admin > db.auth('myUserAdmin', 'mypass123') 1 > db.createUser( ... ... ... { ... ... ... user: "ott1", ... ... ... pwd: "ott1", ... ... ... roles: [ ... ... ... { role: "readWrite", db: "OTT_DB" }, ... ... ... ] ... ... ... } ... ... ... ) Successfully added user: { "user" : "ott1", "roles" : [ { "role" : "readWrite", "db" : "OTT_DB" } ] } > use OTT_DB switched to db OTT_DB > db.auth("ott1","ott1") Error: Authentication failed. 0
從上面發如今use admin狀態下建立數據庫OTT_DB的用戶ott1,在受權時失敗
先刪除ott1
刪除命令:db.dropUser("ott1")
> use admin switched to db admin > db.auth("myUserAdmin","mypass123") 1 > use OTT_DB switched to db OTT_DB > db.auth("ott1","ott1") 1 > db.dropUser("ott1") true >
所以在建立數據庫OTT_DB用戶以前,必須進入到OTT_DB狀態
use OTT_DB switched to db OTT_DB > db.createUser( ... ... ... { ... ... ... user: "ott_test", ... ... ... pwd: "ott_test", ... ... ... roles: [ ... ... ... { role: "readWrite", db: "OTT_DB" }, ... ... ... ] ... ... ... } ... ... ... ) Successfully added user: { "user" : "ott_test", "roles" : [ { "role" : "readWrite", "db" : "OTT_DB" } ] } >
驗證用戶權限
關閉mongo.exe,從新打開mongo.exe
關閉mongo.exe,從新打開mongo.exe
能夠看出,進入OTT_DB數據庫,要查看test集合裏面的數據,必須先受權,輸入用戶名和密碼,不然沒法查詢
若是要刪除ott_test ,必須首先首先:use admin 而後 db.auth('myUserAdmin', 'mypass123'),再use OTT_DB, 最後執行 db.dropUser("ott_test") 才能成功刪除數據庫 OTT_DB對應的用戶
給OTT_DB數據庫建立只讀用戶ott2,注意:必須首先進入admin數據庫,而後受權,而後進入OTT_DB數據庫,而後才能建立用戶
MongoDB shell version: 3.2.7 connecting to: test > use admin switched to db admin > db.auth('myUserAdmin', 'mypass123') 1 > use OTT_DB switched to db OTT_DB > db.createUser( ... ... ... { ... ... ... user: "ott2", ... ... ... pwd: "ott2", ... ... ... roles: [ ... ... ... { role: "read", db: "OTT_DB" }, ... ... ... ] ... ... ... } ... ... ... ) Successfully added user: { "user" : "ott2", "roles" : [ { "role" : "read", "db" : "OTT_DB" } ] } >
關閉mongo.exe,從新打開mongo.exe,驗證ott2用戶是不是隻讀用戶
MongoDB shell version: 3.2.7 connecting to: test > use OTT_DB switched to db OTT_DB > db.auth("ott2","ott2") 1 > db.test.find() { "_id" : ObjectId("59f837e28d41d3c11f04f7c8"), "name" : "mike" } { "_id" : ObjectId("59f838bd38e747cd423fcb23"), "name" : "kite" } > db.test.insert("name":"myname") 2017-10-31T17:40:54.586+0800 E QUERY [thread1] SyntaxError: missing ) after argument list @(shell):1:21 > db.test.insert({"name":"myname"}) WriteResult({ "writeError" : { "code" : 13, "errmsg" : "not authorized on OTT_DB to execute command { insert: \"test\", documents: [ { _id: ObjectId('59f8453659d24d08aaa61d31'), name: \"myname\" } ], ordered: true }" } }) >
因而可知ott是隻讀用戶
內建的角色
數據庫用戶角色:read、readWrite;
數據庫管理角色:dbAdmin、dbOwner、userAdmin;
集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
備份恢復角色:backup、restore;
全部數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超級用戶角色:root // 這裏還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
內部角色:__system
角色說明:
Read:容許用戶讀取指定數據庫
readWrite:容許用戶讀寫指定數據庫
dbAdmin:容許用戶在指定數據庫中執行管理函數,如索引建立、刪除,查看統計或訪問system.profile
userAdmin:容許用戶向system.users集合寫入,能夠找指定數據庫裏建立、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶全部分片和複製集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級帳號,超級權限