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.創建一個用戶
1
2
3
4
5
6
7
8
|
> use admin > db.createuser( { user : "admin" , pwd: "123456" , roles: [ { role: "root" , db: "admin" } ] //指定角色為root,表示管理員 } > db.getusers() |
2.2.修改配置文件啟用用戶認證
1
2
3
|
[mongo@mongodb-1 ~]$ vim /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml security: authorization : enabled |
2.3.重啟mongodb
1
2
3
4
5
6
|
[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
1
2
3
4
5
6
|
[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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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" }) |
可以看到只能讀取,不能插入
到此這篇關于mongodb數據庫授權認證的實現的文章就介紹到這了,更多相關mongodb數據庫授權認證內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_44953658/article/details/122185708