<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
安裝 MongoDB 時,會自動建立 admin 資料庫,這是一個特殊資料庫,提供了普通資料庫沒有的功能。
有些使用者角色賦予使用者操作多個資料庫的許可權,而這些角色只能在 admin 資料庫中建立,要建立有權操作所有資料庫的超級使用者,必須將該使用者加入到 admin 資料庫中。檢查憑證時,MongoDB 將在指定資料庫和 admin 資料庫中檢查使用者賬戶。
資料庫使用者角色:read、readWrite;
資料庫管理角色:dbAdmin、dbOwner、userAdmin;
叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
備份恢復角色:backup、restore;
所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超級使用者角色:root #這裡還有幾個角色間接或直接提供了系統超級使用者的存取(dbOwner 、userAdmin、userAdminAnyDatabase)
角色說明:
read:允許使用者讀取指定資料庫;
readAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權;
readWrite:允許使用者讀寫指定資料庫;
readWriteAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀寫許可權;
dbAdmin:允許使用者在指定資料庫中執行管理函數,如索引建立、刪除,檢視統計或存取system.profile;
dbAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權;
clusterAdmin:只在admin資料庫中可用,賦予使用者所有分片和複製集相關函數的管理許可權;
userAdmin:允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者;
userAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權;
root:只在admin資料庫中可用。超級賬號,超級許可權;
show dbs #顯示資料庫列表 show collections #顯示當前資料庫中的集合(類似關聯式資料庫中的表) show users #顯示使用者 use <db name> #切換當前資料庫,如果資料庫不存在則建立資料庫。 db.help() #顯示資料庫操作命令,裡面有很多的命令 db.foo.help() #顯示集合操作命令,同樣有很多的命令,foo指的是當前資料庫下,一個叫foo的集合,並非真正意義上的命令 db.foo.find() #對於當前資料庫中的foo集合進行資料查詢(由於沒有條件,會列出所有資料) db.foo.find( { a : 1 } ) #對於當前資料庫中的foo集合進行查詢,條件是資料中有一個屬性叫a,且a的值為1
MongoDB沒有建立資料庫的命令,但有類似的命令。 如:如果你想建立一個“myTest”的資料庫,先執行use myTest命令,之後就做一些操作(如:db.createCollection(‘user’)),這樣就可以建立一個名叫“myTest”的資料庫。
db.dropDatabase() #刪除當前使用資料庫 db.cloneDatabase("127.0.0.1") #將指定機器上的資料庫的資料克隆到當前資料庫 db.copyDatabase("mydb", "temp", "127.0.0.1") #將本機的mydb的資料複製到temp資料庫中 db.repairDatabase() #修復當前資料庫 db.getName() #檢視當前使用的資料庫,也可以直接用db db.stats() #顯示當前db狀態 db.version() #當前db版本 db.getMongo() #檢視當前db的連結機器地址 db.serverStatus() #檢視資料庫伺服器的狀態
MongoDB安裝完成後,資料庫 admin 中沒有任何使用者賬戶。在資料庫 admin 中沒有任何賬戶時,MongoDB 向從本地主機發起的連線提供全面的資料庫管理許可權。因此設定 MongoDB 新範例時,首先需要建立使用者管理員賬戶
和資料庫管理員賬戶
。使用者管理員賬戶可在 admin 和其他資料庫中建立使用者賬戶。您還需要建立一個資料庫管理員賬戶,將其作為管理資料庫、叢集、複製和 MongoDB 其他方面的超級使用者。
使用者管理員賬戶和資料庫管理員賬戶都是在資料庫 admn 中建立的。在 MongoDB 伺服器中啟用身份驗證後,要以使用者管理員或資料庫管理員的身份連線到伺服器,必須向 admin 資料庫驗證身份,您還需在每個資料庫中建立使用者賬戶,讓這些使用者能夠存取該資料庫。
設定存取控制的第一步是建立使用者管理員賬戶。使用者管理員應只有建立使用者賬戶的許可權,而不能管理資料庫或執行其他管理任務。這確保資料庫管理和使用者賬戶管理之間有清晰的界限。
userAdminAnyDatabase
角色,userAdminAnyDatabase
只在admin
資料庫中可用,賦予使用者所有資料庫的userAdmin許可權。例如,下面是在 admin 資料庫中建立一個名為myUserAdmin
使用者。
[root@mbasic ~]# mongo MongoDB shell version: 3.2.6 connecting to: test > use admin switched to db admin > db.createUser( ... { ... user: "myUserAdmin", ... pwd: "abc123", ... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] ... } ... ) Successfully added user: { "user" : "myUserAdmin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } >
使用者管理員應只有建立使用者賬戶的許可權,而不能管理資料庫或執行其他管理任務。
要建立某個庫的管理使用者,必須在 admin 進行認證,給哪個庫建立使用者就先切換到哪個庫下面。
編輯組態檔/etc/mongod.conf
,修改內容如下:
security: authorization: enabled
重啟mongodb服務
systemctl restart mongod
> use admin switched to db admin > db.auth("myUserAdmin","abc123") 1 >
也可以在啟動 MongoDB shell 時使用選項-u
和-p
向資料庫 admin 驗證身份:
mongo -u "myUserAdmin" -p "abc123" --authenticationDatabase admin
要建立資料庫管理員,可在 MongoDB shell 中切換到資料庫 admin,再使用方法createUser
新增角色為readWriteAnyDatabase
、dbAdminAnyDatabase
和clusterAdmin
的使用者。這讓這名使用者能夠存取系統中的所有資料庫、建立新的資料庫以及管理 MongoDB 叢集和副本集。
> use admin switched to db admin > db.createUser( ... { ... user: "dbadmin", ... pwd: "abc123", ... roles: [ "readWriteAnyDatabase", "dbAdminAnyDatabase","clusterAdmin" ] ... } ... ) Successfully added user: { "user" : "dbadmin", "roles" : [ "readWriteAnyDatabase", "dbAdminAnyDatabase", "clusterAdmin" ] }
資料庫管理員能夠存取系統中的所有資料庫、建立新的資料庫以及管理 MongoDB 叢集和副本集。
如果要求管理其他資料庫,首先要去 admin 庫裡面去認證。
一旦經過認證的使用者管理員,可以使用
db.createUser()
去建立額外的使用者。
你可以分配mongodb內建的角色或使用者自定義的角色給使用者。這個 myUserAdmin 使用者僅僅只有特權去管理使用者和角色,如果你試圖執行其他任何操作,例如在 test 資料庫中的foo集合中去讀資料,mongodb將返回錯誤。
你建立使用者的資料庫(這裡就是test資料庫)是該使用者認證資料庫。儘管使用者認證是這個資料庫,使用者依然可以有其他資料庫的角色。即使用者認證資料庫不限制使用者許可權。
建立一個角色為readWrite
的使用者 test1 來管理資料庫test
。
[root@mbasic ~]# mongo MongoDB shell version: 3.2.6 connecting to: test > use admin switched to db admin > db.auth('myUserAdmin','abc123') 1 > use test switched to db test > db.createUser( ... { ... user:"test1", ... pwd: "test1", ... roles: [{ role: "readWrite", db: "test"}] ... } ... ) Successfully added user: { "user" : "test1", "roles" : [ { "role" : "readWrite", "db" : "test" } ] } >
[root@mbasic ~]# mongo MongoDB shell version: 3.2.6 connecting to: test > use test switched to db test > db.auth('test1','test1') 1 >
建立一個dmp使用者,對dmp資料庫唯讀許可權。
> use admin switched to db admin > db.auth('myUserAdmin','abc123') 1 > use dmp switched to db dmp >db.createUser( { user:"dmp1", pwd: "dmp1pass", roles: [{ role: "read", db: "dmp"}] } )
我們建立了一個資料庫 dmp,並且建立一個有讀寫許可權的使用者 dmp,密碼dmp,我們匯入一個從其他資料庫匯出來的 csv 格式的資料。
[root@mbasic ~]# mongoimport -udmp -p dmp --db dmp --collection dmp_merge_basic --type csv --headerline --ignoreBlanks --file dmp.csv 2018-09-20T15:23:38.024+0800 connected to: localhost 2018-09-20T15:23:39.441+0800 imported 15347 documents
把git倉庫克隆到本地
git clone https://github.com/mrvautin/adminMongo
cd adminMongo
npm install
npm start
存取地址
http://YOUR_SERVER_IP:1234
mongodb://dmp:dmp@10.0.1.26:27017/dmp
到此這篇關於Mongodb 使用者許可權管理及設定詳解的文章就介紹到這了,更多相關Mongodb 使用者許可權管理及設定內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45