日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mongodb授权登录,经过自己修改后的授权登录方式

發布時間:2024/9/27 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mongodb授权登录,经过自己修改后的授权登录方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mongodb版本為3.4(目前最新),演示的是linux下的mongodb授權認證(關于MongoDB的安裝可以參考:http://blog.csdn.net/tototuzuoquan/article/details/55805811)


開啟MongoDB服務時不添加任何參數時,默認是沒有權限驗證的,登錄的用戶可以對數據庫任意操作而且可以遠程訪問數據庫!
? ?在剛安裝完畢的時候MongoDB都默認有一個admin數據庫,此時admin數據庫是空的,沒有記錄權限相關的信息!當admin.system.users一個用戶都沒有時,即使mongod啟動時添加了--auth參數,如果沒有在admin數據庫中添加用戶,此時不進行任何認證還是可以做任何操作(不管是否是以--auth 參數啟動),直到在admin.system.users中添加了一個用戶。
需要注意的是:admin.system.users中將會保存比在其它數據庫中設置的用戶權限更大的用戶信息,擁有超級權限,也就是說在admin中創建的用戶可以對mongodb中的其他數據庫數據進行操作。
1 mongodb系統中,數據庫是由超級用戶來創建的,一個數據庫可以包含多個用戶,一個用戶只能在一個數據庫下,不同數據庫中的用戶可以同名!
2 當admin.system.users一個用戶都沒有時,即使mongod啟動時添加了--auth參數,如果沒有在admin數據庫中添加用戶,此時不進行任何認證還是可以做任何操作(不管是否是以--auth 參數啟動),直到在admin.system.users中添加了一個用戶。
3 特定數據庫比如DB1下的用戶User1,不能夠訪問其他數據庫DB2,但是可以訪問本數據庫下其他用戶創建的數據!
4 不同數據庫中同名的用戶不能夠登錄其他數據庫!比如DB1,DB2都有user1,以user1登錄DB1后,不能夠登錄到DB2進行數據庫操作!
5 在admin數據庫創建的用戶具有超級權限,可以對mongodb系統內的任何數據庫的數據對象進行操作!


下面通過實驗的方式進程驗證(可能不全面,歡迎大家指正):
1 第一次安裝monogdb時,admin數據庫中沒有任何用戶,此時不管是否以--auth方式啟動數據庫,其他數據庫(比如test數據庫)中的用戶都可以對另外的數據庫(比如db1數據庫)中的數據進行操作~!
a)以默認的方式啟動mongodb



第一次登錄不啟動授權(mongo默認不啟動)

cd /etc/init.d/

接著使用 ./mongo 命令連接數據庫

./mongodb start?


切換到admin數據庫?use admin

使用創建用戶命令:  

use admin

#查看admin 數據庫中的用戶信息

db.system.users.find();

db.createUser({user: "docdetection",pwd: "123456",roles: [ { role: "root", db: "admin" } ]}

)

則對admin數據庫添加了名為docdetection的用戶(注:mongo為每一個數據庫都提供了一套用戶權限)

接著關閉數據庫(注:當啟動了授權認證,只有root角色有權限可以關閉數據庫)

cd /etc/init.d/./mongodb restartdb.shutdownServer();然后Ctrl + C的方式退出客戶端連接

第二次登錄啟用授權認證:

cd /usr/local/mongodb./mongo ip:27017

接著切換到admin數據庫,使用查看用戶命令

use admin show users結果如下:{ "_id" : "admin.docdetection", "user" : "docdetection", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ] }

將提示未授權

這時需要做授權認證,下面的命令是驗證是否存在對應的用戶

> db.auth("docdetection","123456"); 1 > db.auth("docdettion","123456"); Error: Authentication failed. 0 > 如上所示,如果數值為1表示已經存在了該用戶,否則不存在該用戶可以查詢系統中是否有該用戶了:> db.system.users.find(); { "_id" : "admin.docdetection", "user" : "docdetection", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "sRqUK+Hz0GeUZ++P+s248Q==", "storedKey" : "6AoCmjxxxxxFiwIn7ifSirc=", "serverKey" : "7Mrd4rbGcxcxq7vtbZLb5k=" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] } { "_id" : "docdetection.docdetection", "user" : "docdetection", "db" : "docdetection", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "5yVnFHjtjPedY21RlAP7wg==", "storedKey" : "58rxxphm/HDdUPfxxxxxe4NLlbLTI=", "serverKey" : "J46CYhOVxxxxxxr8bPBzkQZU=" } }, "roles" : [ { "role" : "readWrite", "db" : "docdetection" } ] } >

再調用剛才的命令則可以查看到用戶信息

use admin

show users

顯示的結果如下:

{
"_id" : "admin.docdetection",
"user" : "docdetection",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}

接著我們需要為我們的數據庫添加相關用戶,這里使用

docdetection為示例

use docdetection db.createUser({user: "docdetection",pwd: "123456",roles: [{ role: "readWrite", db: "docdetection" }]} )

這里為docdetection數據庫添加了具有讀寫權限的角色

總結

以上是生活随笔為你收集整理的mongodb授权登录,经过自己修改后的授权登录方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。