Windows MongoDB安裝配置

   一、下載

    官網: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

    

     安裝成功

 

    

    

    啓動mongodb服務

      net start MongoDB

      

      

 

      服務成功啓動

      能夠看看日誌文件:後來去查看日誌文件: D:\MongoData\dblog\mongod.log
     

    

   關閉mongodb服務

    net stop MongoDB

    

    

   刪除Windows服務

    兩種方式:

     一、 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數據庫)是該用戶認證數據庫。儘管用戶認證是這個數據庫,用戶依然能夠有其餘數據庫的角色。即用戶認證數據庫不限制用戶權限。

    

    7.一、建立讀寫用戶

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對應的用戶

    7.二、建立只讀用戶

    給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是隻讀用戶

   八、MongoDB數據庫角色

    內建的角色 
    數據庫用戶角色: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數據庫中可用。超級帳號,超級權限

相關文章
相關標籤/搜索