MongoDB用戶管理

MongoDB 3.0 安全權限訪問控制,在添加用戶上面3.0版本和之前的版本有很大的區別

帳號是跟著庫走的,所以創建用戶需要在指定庫里創建

添加用戶

用有權限的用戶(如admin),登入主節點,選中對應需要加用戶的數據庫,執行:
db.createUser({
    user:'用戶名',
    pwd:'密碼',
    roles:[
        {
            role: "read",
            db: "數據庫名"
        }
    ] 
});

展示當前數據庫的用戶及權限

show users;

修改用戶密碼

db.changeUserPassword('用戶名','密碼');

更新用戶

db.updateUser(
      "用戶名",
      {
        roles:[
            {
                role: "read",
                db: "數據庫名"
            }
        ],
        pwd: "密碼"
    }
)

在原有基礎上增加用戶權限

db.grantRolesToUser(
        "用戶名",
        [
                {
                        role:"readWrite",
                        db:"數據庫名"
               }
        ]
)

刪除用戶

db.dropUser("用戶名")

權限說明

Read:允許用戶讀取指定數據庫
readWrite:允許用戶讀寫指定數據庫
dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫里創建、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和復制集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級賬號,超級權限

其他

我們在查看服務當前連接有那些, 可以執行

db.serverStatus().connections;

如果發現沒有執行該指令的權限, 比如:

not authorized on admin to execute command { serverStatus...

應該使用超級管理員用戶切換到admin數據庫去執行該指令, 如果不是超級管理員, 需要對該用戶(比如admin用戶)授權root權限

db.grantRolesToUser("admin",[{role:"root",db:"admin"}])

上述指令只能查到當前的連接數量,沒有詳細的客戶端IP信息, 比如如下結果:

{
    "current" : 14,
    "available" : 838846,
    "totalCreated" : 8922168,
    "active" : 2
}

如果想要查看連接的IP和端口, 可以使用:

db.currentOp(true).inprog.forEach(function(d){if (d.client)printjson(d.client)})

得到如下結果示例:

"172.16.20.180:51302"
"172.16.20.180:44510"
"172.16.50.240:36624"
"172.16.50.240:52220"
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容