Windows MongoDB安裝配置


   1、下載

    官網:http://www.runoob.com/mongodb/mongodb-window-install.html

    由於是在window下,所以我下載的是mongodb-win32-x86_64-2008plus-ssl-3.2.7-signed.msi,和普通安裝軟件exe一樣,一直點下一步,中途改改安裝路徑。

 

  2、配置

    安裝之后,還需要配置,比如數據庫的數據安裝路徑,日志路徑等等。

    MongoDB將數據目錄存儲在 db 目錄下。但是這個數據目錄不會主動創建,需要我們在安裝完成后需要手動創建

    為日志文件,數據文件和配置文件創建目錄

    配置文件目錄:D:\MongoData\config\mongod.cfg

    日志文件目錄:D:\MongoData\dblog\

    數據文件目錄:D:\MongoData\db\

    

    接着再配置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

 

  3、安裝服務

    配置好上面后,在到cmd中執行(使用管理員權限):

    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服務

    兩種方式:

     1、 D:\Program Files\MongoDB\Server\3.2\bin> mongod --config D:\MongoData\config\mongod.cfg --remove

      

 

     2、在系統管理員窗口輸入:sc delete MongoDB 

      

 

   4、用戶權限設置

      1、MongoDB是沒有默認管理員賬號,所以要先添加管理員賬號,再開啟權限認證。

    2、切換到admin數據庫,添加的賬號才是管理員賬號。

    3、用戶只能在用戶所在數據庫登錄,包括管理員賬號。

    4、管理員可以管理所有數據庫,但是不能直接管理其他數據庫,要先在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()

    

 

   5、開啟權限驗證

    配置文件: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服務。

 

  6、驗證權限是否生效  

    

 

  7、添加普通用戶

    1、一旦經過認證的用戶管理員,可以使用db.createUser()去創建額外的用戶,你可以分配mongodb內置的角色或用戶自定義的角色給用戶。

       2、這個myUserAdmin用戶僅僅只有特權去管理用戶和角色,myUserAdmin,如果你試圖執行其他任何操作,例如在test數據庫中的foo集合中去讀數據,mongodb將返回錯誤。

    3、你創建用戶的數據庫(這里就是test數據庫)是該用戶認證數據庫。盡管用戶認證是這個數據庫,用戶依然可以有其他數據庫的角色。即用戶認證數據庫不限制用戶權限。

    

    7.1、創建讀寫用戶

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.2、創建只讀用戶

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

   8、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數據庫中可用。超級賬號,超級權限

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM