網站首頁 編程語言 正文
1.與用戶相關的命令
- db.auth() 將用戶驗證到數據庫。
- db.changeUserPassword() 更改現有用戶的密碼。
- db.createUser() 創建一個新用戶。
- db.dropUser() 刪除單個用戶。
- db.dropAllUsers() 刪除與數據庫關聯的所有用戶。
- db.getUser() 返回有關指定用戶的信息。
- db.getUsers() 返回有關與數據庫關聯的所有用戶的信息。
- db.grantRolesToUser() 授予用戶角色及其特權。
- db.removeUser() 已過時。從數據庫中刪除用戶。
- db.revokeRolesFromUser() 從用戶中刪除角色。
- db.updateUser() 更新用戶數據。
2.配置mongodb登陸授權認證
2.1.創建一個用戶
> use admin > db.createUser( { user: "admin", pwd: "123456", roles: [ { role: "root", db: "admin" } ] //指定角色為root,表示管理員 } > db.getUsers()
2.2.修改配置文件啟用用戶認證
[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
使用口令登陸后會發現最后一個警告信息也會消失
3.授權用戶并賦予多個權限
mongodb可以創建多個用戶并針對不同的庫進行不同的操作
3.1.創建用戶并制造數據
1.創建用戶 [mongo@mongodb-1 ~]$ mongo -uadmin -p123456 > db.createUser( ... { ... user: "mytest", ... pwd: "123456", ... roles: [ { role: "readWrite", db: "test" }, //可讀可寫 ... { role: "read", db: "test2" } ] //可讀 ... } ... ) 2.插入數據 test庫 > use test > db.test.insert({"name":"xiaoming","age":10}) > db.test.insert({"name":"xiaohong","age":10}) > db.test.insert({"name":"xiaolan","age":10}) test2庫 > use test2 > db.test2.insert({"name":"jiangxl","job":"it","age":"99"}) > db.test2.insert({"name":"wanger","job":"it","age":"99"})
3.2.使用mytest登錄test庫驗證權限
1.登錄mytest用戶并連接到tets庫 [mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test 2.查看所有表 > show tables hash test 3.查看是否有讀權限 > 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.查看是否有寫入權限 > db.test.insert({"name":"xiaozhang","age":10}) 5.查看是否寫入成功 > 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 }
可讀可寫
3.3.使用mytest登錄test2庫驗證權限
由于普通用戶只能登錄test庫因此想要切換其他庫,只能是登陸test庫后使用use進行切換
1.登錄test庫 [mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test 2.切換到tets2庫 > use test2 3.查看表 > show tables test2 4.查看表中數據 > db.test2.find() 5.插入一條數據,查看是否插入成功 > 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" })
可以看到只能讀取,不能插入
原文鏈接:https://blog.csdn.net/weixin_44953658/article/details/122185708
相關推薦
- 2022-12-10 docker編譯IJKPlayer播放器記錄詳解_docker
- 2022-10-25 如何利用Python和matplotlib更改縱橫坐標刻度顏色_python
- 2022-10-16 C語言中關于計算字符串長度的幾種方式_C 語言
- 2022-12-03 淺析nginx?客戶端返回499的錯誤碼的問題_nginx
- 2022-12-07 Rust?for循環語法糖背后的API場景分析_Rust語言
- 2022-09-02 Python用matplotlib庫畫圖中文和負號顯示為方框的問題解決_python
- 2022-01-01 element對穿梭框對接口返回的數據其他字段進行校驗多個校驗
- 2022-04-03 用Python實現控制電腦鼠標_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支