亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mongodb關于用戶權限的總結

發布時間:2020-08-18 21:59:52 來源:ITPUB博客 閱讀:170 作者:lusklusklusk 欄目:關系型數據庫

官方文檔

https://docs.mongodb.com/v3.6/reference/built-in-roles/

https://docs.mongodb.com/v3.6/reference/method/db.auth/


總結

1、mongodb啟動的時候加了--auth參數,則mongo命令連接到mongodb數據庫后,執行show dbs這樣的操作都會報錯,需要執行db.auth("user","PWD")驗證用戶密碼正確后,才能執行操作,且該user有什么權限就只能執行什么操作

2、授權操作可以在創建用戶db.createUser的時候授權,也可以使用db.grantRolesToUser對已存在用戶授權

3、mongodb的用戶是放在一個個的數據庫里面,比如db.system.users.find()顯示_id為db1.user1表示在db1庫中創建了一個用戶user1,_id為db2.user1表示在db2庫中創建了一個用戶user1,和mysql用戶模式user@host有點類似

4、root、readWriteAnyDatabase等角色的用戶必須綁定admin庫,不是說root角色的用戶只能在admin庫中創建,如下在test1庫中建立用戶名為root的用戶,擁有root角色綁定了admin庫,以后在test1庫中執行auth正常后,可以執行任何操作。當然這個test1庫中建立的root用戶在admin庫中執行auth會報錯Error: Authentication failed,因為這個用戶并不是admin庫中的用戶

>use test1
>db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin" }]})

5、mongodb中admin數據庫是一個特別的數據庫,一些角色只能在admin庫中用,但是不代表admin庫中的用戶就擁有所有權限,如下在admin庫中建立一個用戶admin_user,這個用戶只在admin庫中有讀權限,無法讀其他數據庫。

>use admin
>db.createUser({user:"admin_user",pwd:"123456",roles:["read"]})

6、db.auth("user","PWD")驗證時,這個用戶user必須存在當前數據庫下,如果當前數據庫下不存在這樣用戶則會報錯。不能說具有root角色的用戶可以在任何數據庫中執行db.auth驗證,只能說具有root角色的用戶1在這個用戶1指定的數據庫中執行db.auth驗證后,可以訪問其他所有數據庫

7、異機使用mongo命令連接mongodb數據庫服務器的數據庫時,必須指定該數據庫存在的用戶名和密碼。如下192.168.0.10/test1庫存在一個root超級管理員角色的用戶root密碼是123456,在test1庫中執行db.auth("root","123456")后是可以訪問所有數據庫的,但是192.168.0.10/test123庫不存在這樣的用戶。則前一條語句可以正常連接,后一條語句報錯Error: Authentication failed無法連接。

mongo 192.168.0.10/test1 -u root -p "123456"   --正常,可以連接
mongo 192.168.0.10/test123 -u root -p "123456"  --報錯,認證失敗,無法連接

8、mongodb查看當前用戶使用命令db.runCommand({connectionStatus:1}),就像oracle執行show users可以顯示當前會話的用戶




創建用戶的時候授權db.createUser

>use test1
>db.createUser({user:"a1",pwd:"123456",roles:[{role:"clusterAdmin",db:"admin" },{role:"readAnyDatabase",db:"admin" },{role:"readWrite",db:"test"},"readWrite"]})

在test1這個數據庫中創建了一個用戶a1,這個用戶擁有集群管理權限、查詢任何數據庫的權限、讀寫test數據庫權限、讀寫test1數據庫的權限,最后一個readwrite沒有標明數據庫表示在本地數據庫的權限即在test1這個數據庫的權限

這個用戶a1,show users時只能在test1這個數據庫看到,在admin這個數據庫執行show users看不這個用戶a1,因為這個用戶不是admin下面的用戶


readAnyDatabase角色必須綁定admin庫,否則報錯

>db.createUser({user:"a2",pwd:"123456",roles:[{role:"readAnyDatabase",db:"test" }]})

報錯[thread1] Error: couldn't add user: No role named readAnyDatabase@test

readAnyDatabase只在admin中可用,把db:"test"改成db:"admin"即可


授予權限db.grantRolesToUser

>use test1
>db.grantRolesToUser("a1",[{role:"readWrite",db:"test2"}])

對數據庫test1中的a1用戶授予test2數據庫的讀寫權限


取消權限db.revokeRolesFromUser

>use test1
>db.revokeRolesFromUser("a1",[{role:"readWrite",db:"test2"}])

對數據庫test1中的a1用戶取消test2數據庫的讀寫權限


查詢用戶的三種方法

>show users --只能查看當前數據庫下的用戶
>use admin
>db.system.users.find() --必須進入admin數據庫執行,能查詢所有數據庫下的所有用戶
>db.system.users.find().pretty() --必須進入admin數據庫執行,能查詢所有數據庫下的所有用戶,結果顯示界面比db.system.users.find()友好

如果不是進入admin數據庫而是進入其他數據庫比如A執行上面兩個,沒有返回結果,就算這個數據庫A下有用戶。


刪除用戶

>db.dropAllUsers();--刪除當前庫下面的所有用戶,其他庫的用戶不受影響
>db.dropUser('a3');--刪除當前庫下面的a3用戶


驗證用戶

>use test1
>db.auth("a1","123456")

對數據庫test1中的a1用戶進行驗證,首先在test1庫中,a1用戶必須存在,其次a1用戶的密碼必須是123456,才能驗證成功

結果返回1表示成功


mongodb啟動時沒有用--auth參數,mongo命令連接后也可以執行db.auth

use db
db.createUser({user:"admin2",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
db.auth("admin2","admin2")--報錯Error: Authentication failed
db.auth("admin2","123456")


角色列表

Read:允許用戶讀取指定數據庫

readWrite:允許用戶讀寫指定數據庫

dbAdmin:允許用戶擁有指定數據庫的的所有權限,如數據庫或集合或索引的創建、刪除,查看

userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫里創建、刪除和管理用戶及角色

clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和復制集相關函數的管理權限。

readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限

readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限

userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限

dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。

root:只在admin數據庫中可用。超級賬號,超級權限

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

得荣县| 金昌市| 诏安县| 恩平市| 吴桥县| 石首市| 封丘县| 柳州市| 遵义市| 建水县| 广水市| 上高县| 东丰县| 娱乐| 札达县| 县级市| 桑植县| 武义县| 来安县| 尼勒克县| 清新县| 丰县| 章丘市| 叶城县| 卢氏县| 开江县| 宜兰市| 北宁市| 郎溪县| 宿松县| 嘉荫县| 安溪县| 北安市| 苏尼特右旗| 芜湖市| 桃江县| 郯城县| 莆田市| 文成县| 察隅县| 马尔康县|