MongoDB數(shù)據(jù)庫(kù)授權(quán)認(rèn)證的實(shí)現(xiàn)
1.與用戶相關(guān)的命令
- db.auth() 將用戶驗(yàn)證到數(shù)據(jù)庫(kù)。
- db.changeUserPassword() 更改現(xiàn)有用戶的密碼。
- db.createUser() 創(chuàng)建一個(gè)新用戶。
- db.dropUser() 刪除單個(gè)用戶。
- db.dropAllUsers() 刪除與數(shù)據(jù)庫(kù)關(guān)聯(lián)的所有用戶。
- db.getUser() 返回有關(guān)指定用戶的信息。
- db.getUsers() 返回有關(guān)與數(shù)據(jù)庫(kù)關(guān)聯(lián)的所有用戶的信息。
- db.grantRolesToUser() 授予用戶角色及其特權(quán)。
- db.removeUser() 已過(guò)時(shí)。從數(shù)據(jù)庫(kù)中刪除用戶。
- db.revokeRolesFromUser() 從用戶中刪除角色。
- db.updateUser() 更新用戶數(shù)據(jù)。
2.配置mongodb登陸授權(quán)認(rèn)證
2.1.創(chuàng)建一個(gè)用戶
> use admin > db.createUser( { user: "admin", pwd: "123456", roles: [ { role: "root", db: "admin" } ] //指定角色為root,表示管理員 } > db.getUsers()
2.2.修改配置文件啟用用戶認(rèn)證
[mongo@mongodb-1 ~]$ vim /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml security: authorization: enabled
2.3.重啟mongodb
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown killing process with pid: 17899 [mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml about to fork child process, waiting until server is ready for connections. forked process: 18511 child process started successfully, parent exiting
2.4.使用口令登陸mongodb
[mongo@mongodb-1 ~]$ mongo -uadmin -p123456 MongoDB shell version v4.0.14 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("ae65176e-ac6b-4906-b621-496996381417") } MongoDB server version: 4.0.14 > show dbs
使用口令登陸后會(huì)發(fā)現(xiàn)最后一個(gè)警告信息也會(huì)消失
3.授權(quán)用戶并賦予多個(gè)權(quán)限
mongodb可以創(chuàng)建多個(gè)用戶并針對(duì)不同的庫(kù)進(jìn)行不同的操作
3.1.創(chuàng)建用戶并制造數(shù)據(jù)
1.創(chuàng)建用戶 [mongo@mongodb-1 ~]$ mongo -uadmin -p123456 > db.createUser( ... { ... user: "mytest", ... pwd: "123456", ... roles: [ { role: "readWrite", db: "test" }, //可讀可寫(xiě) ... { role: "read", db: "test2" } ] //可讀 ... } ... ) 2.插入數(shù)據(jù) test庫(kù) > use test > db.test.insert({"name":"xiaoming","age":10}) > db.test.insert({"name":"xiaohong","age":10}) > db.test.insert({"name":"xiaolan","age":10}) test2庫(kù) > use test2 > db.test2.insert({"name":"jiangxl","job":"it","age":"99"}) > db.test2.insert({"name":"wanger","job":"it","age":"99"})
3.2.使用mytest登錄test庫(kù)驗(yàn)證權(quán)限
1.登錄mytest用戶并連接到tets庫(kù) [mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test 2.查看所有表 > show tables hash test 3.查看是否有讀權(quán)限 > db.test.find() { "_id" : ObjectId("602c73b5d9d09b9b700c9eb2"), "name" : "xiaoming", "age" : 10 } { "_id" : ObjectId("602c73bdd9d09b9b700c9eb3"), "name" : "xiaohong", "age" : 10 } { "_id" : ObjectId("602c73c1d9d09b9b700c9eb4"), "name" : "xiaolan", "age" : 10 } 4.查看是否有寫(xiě)入權(quán)限 > db.test.insert({"name":"xiaozhang","age":10}) 5.查看是否寫(xiě)入成功 > db.test.find() { "_id" : ObjectId("602c73b5d9d09b9b700c9eb2"), "name" : "xiaoming", "age" : 10 } { "_id" : ObjectId("602c73bdd9d09b9b700c9eb3"), "name" : "xiaohong", "age" : 10 } { "_id" : ObjectId("602c73c1d9d09b9b700c9eb4"), "name" : "xiaolan", "age" : 10 } { "_id" : ObjectId("602c74f949b9d3f400ed866b"), "name" : "xiaozhang", "age" : 10 }
可讀可寫(xiě)
3.3.使用mytest登錄test2庫(kù)驗(yàn)證權(quán)限
由于普通用戶只能登錄test庫(kù)因此想要切換其他庫(kù),只能是登陸test庫(kù)后使用use進(jìn)行切換
1.登錄test庫(kù) [mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test 2.切換到tets2庫(kù) > use test2 3.查看表 > show tables test2 4.查看表中數(shù)據(jù) > db.test2.find() 5.插入一條數(shù)據(jù),查看是否插入成功 > db.test2.insert({"name":"xiaozi","job":"it","age":"99"}) WriteCommandError({ "ok" : 0, "errmsg" : "not authorized on test2 to execute command { insert: \"test2\", ordered: true, lsid: { id: UUID(\"6203f7df-d8f8-4880-aab3-4db712ae785f\") }, $db: \"test2\" }", "code" : 13, "codeName" : "Unauthorized" })
可以看到只能讀取,不能插入
到此這篇關(guān)于MongoDB數(shù)據(jù)庫(kù)授權(quán)認(rèn)證的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MongoDB數(shù)據(jù)庫(kù)授權(quán)認(rèn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Docker的MongoDB實(shí)現(xiàn)授權(quán)訪問(wèn)的方法
- 淺析MongoDB之安全認(rèn)證
- python連接mongodb密碼認(rèn)證實(shí)例
- MongoDB開(kāi)啟權(quán)限認(rèn)證的方法步驟詳解
- Java開(kāi)發(fā)之spring security實(shí)現(xiàn)基于MongoDB的認(rèn)證功能
- 關(guān)于Mongodb 認(rèn)證鑒權(quán)你需要知道的一些事
- Mongodb 3.2.9開(kāi)啟用戶權(quán)限認(rèn)證問(wèn)題的步驟詳解
- MongoDB安全及身份認(rèn)證(實(shí)例講解)
- mongodb 3.4下遠(yuǎn)程連接認(rèn)證失敗的解決方法
相關(guān)文章
解決MongoDB 排序超過(guò)內(nèi)存限制的問(wèn)題
最近小編遇到這樣的問(wèn)題:對(duì)集合執(zhí)行一個(gè)大排序操作(如聚合),出現(xiàn)以下錯(cuò)誤:(測(cè)試版本:MongoDB 3.0.6),怎么快速解決此問(wèn)題呢?下面小編給大家分享MongoDB 排序超過(guò)內(nèi)存限制的解決方法,一起看看吧2017-07-07mongodb eval 執(zhí)行服務(wù)器端腳本
在MongoDB的服務(wù)器端可以通過(guò)db.eval函數(shù)來(lái)執(zhí)行javascript腳本,如我們可以定義一個(gè)javascript函數(shù),然后通過(guò)db.eval在服務(wù)器端來(lái)運(yùn)行!我們前面其實(shí)也接觸過(guò)在服務(wù)器段運(yùn)行一個(gè)預(yù)定義的javascript腳本的情況,如在$where查詢,執(zhí)行mapreduce任務(wù)等。2015-05-05MongoDB數(shù)據(jù)庫(kù)安裝配置、基本操作實(shí)例詳解
這篇文章主要介紹了MongoDB數(shù)據(jù)庫(kù)安裝配置、基本操作,結(jié)合實(shí)例形式詳細(xì)分析了MongoDB數(shù)據(jù)庫(kù)安裝配置具體步驟、相關(guān)命令與基本操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-01-01Window環(huán)境下配置Mongodb數(shù)據(jù)庫(kù)
這篇文章介紹了Window環(huán)境下配置Mongodb數(shù)據(jù)庫(kù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Mongodb啟動(dòng)命令參數(shù)中文說(shuō)明
這篇文章主要介紹了Mongodb啟動(dòng)命令參數(shù)中文說(shuō)明,本文包括基本配置、主/從參數(shù)、Sharding(分片)選項(xiàng)等內(nèi)容,需要的朋友可以參考下2014-10-10Navicat遠(yuǎn)程連接MongoDB最全實(shí)現(xiàn)方法以及報(bào)錯(cuò)解決
這篇文章主要給大家介紹了關(guān)于Navicat遠(yuǎn)程連接MongoDB最全實(shí)現(xiàn)方法以及報(bào)錯(cuò)解決的相關(guān)資料,文中通過(guò)圖文將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-03-03Linux服務(wù)器下MariaDB 10自動(dòng)化安裝部署
這篇文章主要介紹了Linux服務(wù)器下MariaDB 10自動(dòng)化安裝部署,需要的朋友可以參考下2016-08-08