• 售前

  • 售后

热门帖子
入门百科

MongoDB数据库授权认证的实现

[复制链接]
务川冷泉水鱼庄 显示全部楼层 发表于 2022-1-7 11:18:37 |阅读模式 打印 上一主题 下一主题
目次


  • 1.与用户相干的下令
  • 2.设置mongodb登岸授权认证

    • 2.1.创建一个用户
    • 2.2.修改设置文件启用用户认证
    • 2.3.重启mongodb
    • 2.4.利用口令登岸mongodb

  • 3.授权用户并赋予多个权限

    • 3.1.创建用户并制造数据
    • 3.2.利用mytest登录test库验证权限
    • 3.3.利用mytest登录test2库验证权限


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. > use admin
  2. > db.createUser(
  3. {
  4.    user: "admin",
  5.    pwd: "123456",
  6.    roles: [ { role: "root", db: "admin" } ]                        //指定角色为root,表示管理员
  7. }
  8. > db.getUsers()
复制代码


2.2.修改设置文件启用用户认证
  1. [mongo@mongodb-1 ~]$ vim /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
  2. security:
  3.   authorization: enabled
复制代码
2.3.重启mongodb
  1. [mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown
  2. killing process with pid: 17899
  3. [mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
  4. about to fork child process, waiting until server is ready for connections.
  5. forked process: 18511
  6. child process started successfully, parent exiting
复制代码
2.4.利用口令登岸mongodb
  1. [mongo@mongodb-1 ~]$ mongo -uadmin -p123456
  2. MongoDB shell version v4.0.14
  3. connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
  4. Implicit session: session { "id" : UUID("ae65176e-ac6b-4906-b621-496996381417") }
  5. MongoDB server version: 4.0.14
  6. > show dbs
复制代码
利用口令登岸后会发现末了一个告诫信息也会消失


3.授权用户并赋予多个权限

mongodb可以创建多个用户并针对差别的库举行差别的操作

3.1.创建用户并制造数据
  1. 1.创建用户
  2. [mongo@mongodb-1 ~]$ mongo -uadmin -p123456
  3. > db.createUser(
  4. ...   {
  5. ...     user: "mytest",
  6. ...     pwd: "123456",
  7. ...     roles: [ { role: "readWrite", db: "test" },                //可读可写
  8. ...              { role: "read", db: "test2" }   ]                                        //可读
  9. ...   }
  10. ... )
  11. 2.插入数据
  12. test库
  13. > use test
  14. > db.test.insert({"name":"xiaoming","age":10})
  15. > db.test.insert({"name":"xiaohong","age":10})
  16. > db.test.insert({"name":"xiaolan","age":10})
  17. test2库
  18. > use test2
  19. > db.test2.insert({"name":"jiangxl","job":"it","age":"99"})
  20. > db.test2.insert({"name":"wanger","job":"it","age":"99"})
复制代码


3.2.利用mytest登录test库验证权限
  1. 1.登录mytest用户并连接到tets库
  2. [mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test
  3. 2.查看所有表
  4. > show tables
  5. hash
  6. test
  7. 3.查看是否有读权限
  8. > db.test.find()
  9. { "_id" : ObjectId("602c73b5d9d09b9b700c9eb2"), "name" : "xiaoming", "age" : 10 }
  10. { "_id" : ObjectId("602c73bdd9d09b9b700c9eb3"), "name" : "xiaohong", "age" : 10 }
  11. { "_id" : ObjectId("602c73c1d9d09b9b700c9eb4"), "name" : "xiaolan", "age" : 10 }
  12. 4.查看是否有写入权限
  13. > db.test.insert({"name":"xiaozhang","age":10})
  14. 5.查看是否写入成功
  15. > db.test.find()
  16. { "_id" : ObjectId("602c73b5d9d09b9b700c9eb2"), "name" : "xiaoming", "age" : 10 }
  17. { "_id" : ObjectId("602c73bdd9d09b9b700c9eb3"), "name" : "xiaohong", "age" : 10 }
  18. { "_id" : ObjectId("602c73c1d9d09b9b700c9eb4"), "name" : "xiaolan", "age" : 10 }
  19. { "_id" : ObjectId("602c74f949b9d3f400ed866b"), "name" : "xiaozhang", "age" : 10 }
复制代码
可读可写


3.3.利用mytest登录test2库验证权限

由于平凡用户只能登录test库因此想要切换其他库,只能是登岸test库后利用use举行切换
  1. 1.登录test库
  2. [mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test
  3. 2.切换到tets2库
  4. > use test2
  5. 3.查看表
  6. > show tables
  7. test2
  8. 4.查看表中数据
  9. > db.test2.find()
  10. 5.插入一条数据,查看是否插入成功
  11. > db.test2.insert({"name":"xiaozi","job":"it","age":"99"})
  12. WriteCommandError({
  13.         "ok" : 0,
  14.         "errmsg" : "not authorized on test2 to execute command { insert: "test2", ordered: true, lsid: { id: UUID("6203f7df-d8f8-4880-aab3-4db712ae785f") }, $db: "test2" }",
  15.         "code" : 13,
  16.         "codeName" : "Unauthorized"
  17. })
复制代码
可以看到只能读取,不能插入

到此这篇关于MongoDB数据库授权认证的实现的文章就先容到这了,更多相干MongoDB数据库授权认证内容请搜索脚本之家以前的文章或继承欣赏下面的相干文章希望大家以后多多支持脚本之家!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作