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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

DB Intro - MongoDB User

發(fā)布時(shí)間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DB Intro - MongoDB User 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

?

?

MongoDB 3.0 用戶創(chuàng)建

摘要:

? ? ? MongoDB 3.0 安全權(quán)限訪問(wèn)控制,在添加用戶上面3.0版本和之前的版本有很大的區(qū)別,這里就說(shuō)明下3.0的添加用戶的方法。

環(huán)境、測(cè)試:

? ? ? 在安裝MongoDB之后,先關(guān)閉auth認(rèn)證,進(jìn)入查看數(shù)據(jù)庫(kù),只有一個(gè)local庫(kù),admin庫(kù)是不存在的:

root@zhoujinyi:/usr/local/mongo4# mongo --port=27020 MongoDB shell version: 3.0.4 connecting to: 127.0.0.1:27020/test 2015-06-29T09:31:08.673-0400 I CONTROL [initandlisten] > show dbs; local 0.078GB

現(xiàn)在需要?jiǎng)?chuàng)建一個(gè)帳號(hào),該賬號(hào)需要有g(shù)rant權(quán)限,即:賬號(hào)管理的授權(quán)權(quán)限。注意一點(diǎn),帳號(hào)是跟著庫(kù)走的,所以在指定庫(kù)里授權(quán),必須也在指定庫(kù)里驗(yàn)證(auth)。

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

上面加粗的就是執(zhí)行的命令:

user:用戶名

pwd:密碼

roles:指定用戶的角色,可以用一個(gè)空數(shù)組給新用戶設(shè)定空角色;在roles字段,可以指定內(nèi)置角色和用戶定義的角色。role里的角色可以選:

Built-In Roles(內(nèi)置角色):1. 數(shù)據(jù)庫(kù)用戶角色:read、readWrite;2. 數(shù)據(jù)庫(kù)管理角色:dbAdmin、dbOwner、userAdmin;3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;4. 備份恢復(fù)角色:backup、restore;5. 所有數(shù)據(jù)庫(kù)角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase6. 超級(jí)用戶角色:root // 這里還有幾個(gè)角色間接或直接提供了系統(tǒng)超級(jí)用戶的訪問(wèn)(dbOwner 、userAdmin、userAdminAnyDatabase)7. 內(nèi)部角色:__system

具體角色:?

Read:允許用戶讀取指定數(shù)據(jù)庫(kù) readWrite:允許用戶讀寫(xiě)指定數(shù)據(jù)庫(kù) dbAdmin:允許用戶在指定數(shù)據(jù)庫(kù)中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計(jì)或訪問(wèn)system.profile userAdmin:允許用戶向system.users集合寫(xiě)入,可以找指定數(shù)據(jù)庫(kù)里創(chuàng)建、刪除和管理用戶 clusterAdmin:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限。 readAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀權(quán)限 readWriteAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀寫(xiě)權(quán)限 userAdminAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的userAdmin權(quán)限 dbAdminAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的dbAdmin權(quán)限。 root:只在admin數(shù)據(jù)庫(kù)中可用。超級(jí)賬號(hào),超級(jí)權(quán)限

剛建立了?userAdminAnyDatabase?角色,用來(lái)管理用戶,可以通過(guò)這個(gè)角色來(lái)創(chuàng)建、刪除用戶。驗(yàn)證:需要開(kāi)啟auth參數(shù)。

root@zhoujinyi:/usr/local/mongo4# mongo --port=27020 MongoDB shell version: 3.0.4 connecting to: 127.0.0.1:27020/test > show dbs; ####沒(méi)有驗(yàn)證,導(dǎo)致沒(méi)權(quán)限。 2015-06-29T10:02:16.634-0400 E QUERY Error: listDatabases failed:{"ok" : 0,"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }","code" : 13 }at Error (<anonymous>)at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)at shellHelper.show (src/mongo/shell/utils.js:630:33)at shellHelper (src/mongo/shell/utils.js:524:36)at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47 > use admin #驗(yàn)證,因?yàn)樵赼dmin下面添加的帳號(hào),所以要到admin下面驗(yàn)證。 switched to db admin > db.auth('dba','dba') 1 > show dbs; admin 0.078GB local 0.078GB > use test #在test庫(kù)里創(chuàng)建帳號(hào) switched to db test > db.createUser( ... { ... user: "zjyr", ... pwd: "zjyr", ... roles: [ ... { role: "read", db: "test" } #只讀帳號(hào) ... ] ... } ... ) Successfully added user: {"user" : "zjyr","roles" : [{"role" : "read","db" : "test"}] } > db.createUser( ... { ... user: "zjy", ... pwd: "zjy", ... roles: [ ... { role: "readWrite", db: "test" } #讀寫(xiě)帳號(hào) ... ] ... } ... ) Successfully added user: {"user" : "zjy","roles" : [{"role" : "readWrite", #讀寫(xiě)賬號(hào)"db" : "test"}] } > show users; #查看當(dāng)前庫(kù)下的用戶 {"_id" : "test.zjyr","user" : "zjyr","db" : "test","roles" : [{"role" : "read","db" : "test"}] } {"_id" : "test.zjy","user" : "zjy","db" : "test","roles" : [{"role" : "readWrite","db" : "test"}] }

上面創(chuàng)建了2個(gè)帳號(hào),現(xiàn)在驗(yàn)證下:驗(yàn)證前提需要一個(gè)集合

> db.abc.insert({"a":1,"b":2}) #插入失敗,沒(méi)有權(quán)限,userAdminAnyDatabase 權(quán)限只是針對(duì)用戶管理的,對(duì)其他是沒(méi)有權(quán)限的。 WriteResult({"writeError" : {"code" : 13,"errmsg" : "not authorized on test to execute command { insert: \"abc\", documents: [ { _id: ObjectId('55915185d629831d887ce2cb'), a: 1.0, b: 2.0 } ], ordered: true }"} }) > bye root@zhoujinyi:/usr/local/mongo4# mongo --port=27020 MongoDB shell version: 3.0.4 connecting to: 127.0.0.1:27020/test > use test switched to db test > db.auth('zjy','zjy') #用創(chuàng)建的readWrite帳號(hào)進(jìn)行寫(xiě)入 1 > db.abc.insert({"a":1,"b":2}) WriteResult({ "nInserted" : 1 }) > db.abc.insert({"a":11,"b":22}) WriteResult({ "nInserted" : 1 }) > db.abc.insert({"a":111,"b":222}) WriteResult({ "nInserted" : 1 }) > db.abc.find() { "_id" : ObjectId("559151a1b78649ebd8316853"), "a" : 1, "b" : 2 } { "_id" : ObjectId("559151cab78649ebd8316854"), "a" : 11, "b" : 22 } { "_id" : ObjectId("559151ceb78649ebd8316855"), "a" : 111, "b" : 222 } > db.auth('zjyr','zjyr') #切換到只有read權(quán)限的帳號(hào) 1 > db.abc.insert({"a":1111,"b":2222}) #不能寫(xiě)入 WriteResult({"writeError" : {"code" : 13,"errmsg" : "not authorized on test to execute command { insert: \"abc\", documents: [ { _id: ObjectId('559151ebb78649ebd8316856'), a: 1111.0, b: 2222.0 } ], ordered: true }"} }) > db.abc.find() #可以查看 { "_id" : ObjectId("559151a1b78649ebd8316853"), "a" : 1, "b" : 2 } { "_id" : ObjectId("559151cab78649ebd8316854"), "a" : 11, "b" : 22 } { "_id" : ObjectId("559151ceb78649ebd8316855"), "a" : 111, "b" : 222 }

有沒(méi)有一個(gè)超級(jí)權(quán)限?不僅可以授權(quán),而且也可以對(duì)集合進(jìn)行任意操作?答案是肯定的,只是不建議使用。那就是role角色設(shè)置成root

> db.auth('dba','dba') 1 > db.createUser( ... { ... user: "zhoujinyi", ... pwd: "zhoujinyi", ... roles: [ ... { role: "root", db: "admin" } #超級(jí)root帳號(hào) ... ] ... } ... ) Successfully added user: {"user" : "zhoujinyi","roles" : [{"role" : "root","db" : "admin"}] } > > show users; #查看當(dāng)前庫(kù)下的用戶 {"_id" : "admin.dba","user" : "dba","db" : "admin","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}] } {"_id" : "admin.zhoujinyi","user" : "zhoujinyi","db" : "admin","roles" : [{"role" : "root","db" : "admin"}] } > use admin switched to db admin > db.auth('zhoujinyi','zhoujinyi') 1 > use test switched to db test > db.abc.insert({"a":1,"b":2}) WriteResult({ "nInserted" : 1 }) > db.abc.insert({"a":1111,"b":2222}) #權(quán)限都有 WriteResult({ "nInserted" : 1 }) > db.abc.find() { "_id" : ObjectId("5591539bb78649ebd8316857"), "a" : 1, "b" : 2 } { "_id" : ObjectId("559153a0b78649ebd8316858"), "a" : 1111, "b" : 2222 } > db.abc.remove({}) WriteResult({ "nRemoved" : 2 })

因?yàn)閹ぬ?hào)都是在當(dāng)前需要授權(quán)的數(shù)據(jù)庫(kù)下授權(quán)的,那要是不在當(dāng)前數(shù)據(jù)庫(kù)下會(huì)怎么樣?

> db admin > db.createUser( ... { ... user: "dxy", ... pwd: "dxy", ... roles: [ ... { role: "readWrite", db: "test" }, #在當(dāng)前庫(kù)下創(chuàng)建其他庫(kù)的帳號(hào),在admin庫(kù)下創(chuàng)建test、abc庫(kù)的帳號(hào) ... { role: "readWrite", db: "abc" } ... ] ... } ... ) Successfully added user: {"user" : "dxy","roles" : [{"role" : "readWrite","db" : "test"},{"role" : "readWrite","db" : "abc"}] } > > show users; {"_id" : "admin.dba","user" : "dba","db" : "admin","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}] } {"_id" : "admin.zhoujinyi","user" : "zhoujinyi","db" : "admin","roles" : [{"role" : "root","db" : "admin"}] } {"_id" : "admin.dxy","user" : "dxy","db" : "admin","roles" : [{"role" : "readWrite","db" : "test"},{"role" : "readWrite","db" : "abc"}] } > use test switched to db test > db.auth('dxy','dxy') #在admin下創(chuàng)建的帳號(hào),不能直接在其他庫(kù)驗(yàn)證, Error: 18 Authentication failed. 0 > use admin switched to db admin #只能在帳號(hào)創(chuàng)建庫(kù)下認(rèn)證,再去其他庫(kù)進(jìn)行操作。 > db.auth('dxy','dxy') 1 > use test switched to db test > db.abc.insert({"a":1111,"b":2222}) WriteResult({ "nInserted" : 1 }) > use abc switched to db abc > db.abc.insert({"a":1111,"b":2222}) WriteResult({ "nInserted" : 1 })

上面更加進(jìn)一步說(shuō)明數(shù)據(jù)庫(kù)帳號(hào)是跟著數(shù)據(jù)庫(kù)來(lái)走的,哪里創(chuàng)建哪里認(rèn)證。

創(chuàng)建了這么多帳號(hào),怎么查看所有帳號(hào)

> use admin switched to db admin > db.auth('dba','dba') 1 > db.system.users.find().pretty() {"_id" : "admin.dba","user" : "dba","db" : "admin","credentials" : {"SCRAM-SHA-1" : {"iterationCount" : 10000,"salt" : "KfDUzCOIUo7WVjFr64ZOcQ==","storedKey" : "t4sPsKG2dXnZztVYj5EgdUzT9sc=","serverKey" : "2vCGiq9NIc1zKqeEL6VvO4rP26A="}},"roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}] } {"_id" : "test.zjyr","user" : "zjyr","db" : "test","credentials" : {"SCRAM-SHA-1" : {"iterationCount" : 10000,"salt" : "h1gOW3J7wzJuTqgmmQgJKQ==","storedKey" : "7lkoANdxM2py0qiDBzFaZYPp1cM=","serverKey" : "Qyu6IRNyaKLUvqJ2CAa/tQYY36c="}},"roles" : [{"role" : "read","db" : "test"}] } {"_id" : "test.zjy","user" : "zjy","db" : "test","credentials" : {"SCRAM-SHA-1" : {"iterationCount" : 10000,"salt" : "afwaKuTYPWwbDBduQ4Hm7g==","storedKey" : "ebb2LYLn4hiOVlZqgrAKBdStfn8=","serverKey" : "LG2qWwuuV+FNMmr9lWs+Rb3DIhQ="}},"roles" : [{"role" : "readWrite","db" : "test"}] } {"_id" : "admin.zhoujinyi","user" : "zhoujinyi","db" : "admin","credentials" : {"SCRAM-SHA-1" : {"iterationCount" : 10000,"salt" : "pE2cSOYtBOYevk8tqrwbSQ==","storedKey" : "TwMxdnlB5Eiaqg4tNh9ByNuUp9A=","serverKey" : "Mofr9ohVlFfR6/md4LMRkOhXouc="}},"roles" : [{"role" : "root","db" : "admin"}] } {"_id" : "admin.dxy","user" : "dxy","db" : "admin","credentials" : {"SCRAM-SHA-1" : {"iterationCount" : 10000,"salt" : "XD6smcWX4tdg/ZJPoLxxRg==","storedKey" : "F4uiayykHDp/r9krAKZjdr+gqjM=","serverKey" : "Kf51IU9J3RIrB8CFn5Z5hEKMSkw="}},"roles" : [{"role" : "readWrite","db" : "test"},{"role" : "readWrite","db" : "abc"}] } > db.system.users.find().count() 5

備份還原使用那個(gè)角色的帳號(hào)?之前創(chuàng)建的帳號(hào)zjy:test庫(kù)讀寫(xiě)權(quán)限;zjyr:test庫(kù)讀權(quán)限

root@zhoujinyi:~# mongodump --port=27020 -uzjyr -pzjyr --db=test -o backup #只要讀權(quán)限就可以備份 2015-06-29T11:20:04.864-0400 writing test.abc to backup/test/abc.bson 2015-06-29T11:20:04.865-0400 writing test.abc metadata to backup/test/abc.metadata.json 2015-06-29T11:20:04.866-0400 done dumping test.abc 2015-06-29T11:20:04.867-0400 writing test.system.indexes to backup/test/system.indexes.bsonroot@zhoujinyi:~# mongorestore --port=27020 -uzjy -pzjy --db=test backup/test/ #讀寫(xiě)權(quán)限可以進(jìn)行還原 2015-06-29T11:20:26.607-0400 building a list of collections to restore from backup/test/ dir 2015-06-29T11:20:26.609-0400 reading metadata file from backup/test/abc.metadata.json 2015-06-29T11:20:26.609-0400 restoring test.abc from file backup/test/abc.bson 2015-06-29T11:20:26.611-0400 error: E11000 duplicate key error index: test.abc.$_id_ dup key: { : ObjectId('559154efb78649ebd831685a') } 2015-06-29T11:20:26.611-0400 restoring indexes for collection test.abc from metadata 2015-06-29T11:20:26.612-0400 finished restoring test.abc 2015-06-29T11:20:26.612-0400 done

轉(zhuǎn)載于:https://www.cnblogs.com/avcs/p/6905495.html

總結(jié)

以上是生活随笔為你收集整理的DB Intro - MongoDB User的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩中文字幕国产 | 日韩一区二区三区免费 | 加勒比视频在线观看 | 久在操| www日本在线 | 中文字幕乱码在线人视频 | 亚洲区小说区图片区qvod | 国内自拍视频在线观看 | 日本一级一片免费视频 | 性色av蜜臀av色欲av | 成年网站免费在线观看 | 国产欧美精品一区二区三区app | 免费的黄色的视频 | 欧美亚日韩 | 天天操夜夜干 | 欧美一级片免费在线观看 | 国产精品69久久久久孕妇欧美 | 偷拍精品一区二区三区 | 少妇精品视频一区二区 | 一道本不卡视频 | 亚洲人午夜射精精品日韩 | 爱情岛亚洲论坛入口 | 婷婷综合五月 | 人人爽夜夜爽 | 亚洲天天影视 | 男人操女人的软件 | 亚洲欧美另类一区 | 韩国一级一片高清免费观看 | 亚色中文 | 香港三级日本三级韩国三级 | 欧美一二三视频 | 97视频播放 | 玖操| 午夜精品影院 | 亚洲超碰在线 | 国产在线一二三区 | 成人性生生活性生交全黄 | 96国产精品 | 成年网站在线观看 | 国产精品丝袜黑色高跟鞋 | 污片网站在线观看 | 不卡av在线播放 | 中文字字幕一区二区三区四区五区 | 久久精品爱 | 毛片在哪看 | 亚洲免费黄色 | 日本午夜激情视频 | 成人作爱视频 | 免费一区 | 国产黑丝视频 | 五月天婷婷综合 | 久久免费看毛片 | 国产波霸爆乳一区二区 | 免费在线黄网 | 亚洲777| 欧美另类极品videosbest使用方法 | 黄色毛毛片 | 精品国产福利 | 高清无码视频直接看 | 天天干b | 麻豆91茄子在线观看 | 国产三级在线观看完整版 | 日韩亚洲精品在线 | 国产精品日| 国产偷人| 色偷偷888欧美精品久久久 | 亚欧洲精品视频 | 日韩精品久久久久久 | 国产精品第1页 | 182午夜视频 | 咪咪色图| 91美女在线观看 | 久久午夜无码鲁丝片 | 男人天堂黄色 | 男生操女生网站 | 色综合综合色 | 成人wwwww免费观看 | 黄色国产小视频 | 国产99免费视频 | 9色视频| 青青草伊人 | 夜夜操免费视频 | 久久av一区二区三 | 理论在线视频 | www.黄色片网站 | av日韩在线播放 | 91成人精品 | 尹人香蕉网 | 欧美一级在线 | 国产在线视频网址 | 中国一级特黄毛片大片 | 国产亚洲91| 日韩精品中文字 | 国产三区av | 国产精品久久久久久久久久直播 | 亚洲片国产一区一级在线观看 | 久久精品国产99国产 | 亚洲精品自拍 | 日韩的一区二区 |