MongoDB 入門之基礎 DCL


此文章主要記錄部分主要的 MongoDB 的 DCL 操作。

MongoDB 默認不需要用戶名和密碼就可以用 mongodb.exe 登錄

一、開啟 MonogoDB 的權限模式

修改 MongoDB 服務的注冊語句,修改加入 --auth 參數,詳情見MongoDB 入門之安裝篇

"$MONGODB_HOME\bin\mongod.exe" --config "$MONGODB_HOME\mongo.cfg" --install --auth
C:\Windows\System32\sc.exe create MongoDB binPath= "\"$MONGODB_HOME\bin\mongod.exe\" --service --auth --config=\"$MONGODB_HOME\mongo.cfg\"" DisplayName= "MongoDB 2.6 Standard" start= "auto"

或者在mongod.cfg 中添加配置

auth=true

二、用戶權限管理

  • 創建用戶
    > db.addUser("user","abc123_")
    WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
    Successfully added user: { "user" : "user", "roles" : [ "dbOwner" ] }
    >

    可以看到當執行 addUser 命令是出現 wraning,雖然創建成功了,但是 MongoDB 建議使用 createUser。

    > db.createUser({
    ...   user:"user",
    ...   pwd:"abc123_",
    ...   roles:[
    ... {
    ... role:"dbOwner",
    ... db:"mydb"
    ... }
    ...   ]
    ... })
    Successfully added user: {
            "user" : "user",
            "roles" : [
                    {
                            "role" : "dbOwner",
                            "db" : "mydb"
                    }
            ]
    }
    >

    如果 MongoDB 開啟了權限模式,並且某一個數據庫沒有任何用戶時,在不驗證權限的情況下,可以創建一個用戶,當繼續創建第二個用戶時,會返回錯誤,若想繼續創建用戶則必須登錄。

    2014-10-16T10:40:41.904+0800 Error: couldn't add user: not authorized on mydb to execute command { createUser: "test", pwd: "xxx", roles: [ { role: "dbOwner", db: "mydb" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004
    >
  • 創建超級管理員
    創建超級管理員需要未開啟權限模式的情況下執行。如果已開啟權限而在 admin 下創建超級管理員,會出現如下錯誤

    > db.createUser({
    ...   user:"admin",
    ...   pwd:"admin",
    ...   roles:[
    ... {
    ... role:"userAdminAnyDatabase",
    ... db:"admin"
    ... }
    ...   ]
    ... })
    2014-10-16T10:48:01.223+0800 Error: couldn't add user: not authorized on admin to execute command { createUser: "admin", pwd: "xxx", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004
    >

    關閉權限模式創建超級管理員

    > use admin
    switched to db admin
    > db.createUser({
    ...   user:"admin",
    ...   pwd:"admin",
    ...   roles:[
    ... {
    ... role:"userAdminAnyDatabase",
    ... db:"admin"
    ... }
    ...   ]
    ... })
    Successfully added user: {
            "user" : "admin",
            "roles" : [
                    {
                            "role" : "userAdminAnyDatabase",
                            "db" : "admin"
                    }
            ]
    }
    >

    如果使用 addUser 創建超級管理員還必須切換到 admin 數據庫。

  • 刪除用戶
    > db.dropUser("user")
    true
    > 
  • 登錄
    anth 需要登錄用戶有該數據庫的權限
    > use mydb
    switched to db mydb
    > db.auth("user","abc123_")
    1
    >


免責聲明!

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



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