• 售前

  • 售后

热门帖子
入门百科

MongoDB 用户相干操作

[复制链接]
123456806 显示全部楼层 发表于 2021-8-14 14:35:49 |阅读模式 打印 上一主题 下一主题
在我们第一次启动MongoDB的时候,仅仅是制定了data数据目次和log日记目次,并没有指定--auth选项,也就是并不需要认证。
  1. [root@VM-0-14-centos mongo_27017]# mongo
  2. MongoDB shell version v4.0.6
  3. connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
  4. Implicit session: session { "id" : UUID("61c35b47-f43b-48fc-a43e-066f56987e9a") }
  5. MongoDB server version: 4.0.6
  6. > db
  7. test
  8. > show dbs;
  9. admin  0.000GB
  10. config 0.000GB
  11. local  0.000GB
  12. > use admin
  13. switched to db admin
  14. > show users;
  15. > db.system.user.find()
复制代码
     我们第一次登录MongoDB的服务,输入db,发现当前数据库是test,但是show dbs却看不到test数据库,实在这个是MongoDB的一个特点,test是一个虚的数据库,想要看到test中的内容,你只需要给test数据库中插入一个文档即可。
     接着,我们可以看到,当我们输入show users的时候,没有看到任何账号信息。接下来我们准备开启--auth参数来重启MongoDB服务,在重启之前,我们需要保证已经分配了新的账号,下面我们开始分配账号:
  1. > db.createUser({ user: "root", pwd: "123456", roles: [ { role: "root", db: "admin"} ]})
  2. Successfully added user: {
  3.     "user" : "root",
  4.     "roles" : [
  5.         {
  6.             "role" : "root",
  7.             "db" : "admin"
  8.         }
  9.     ]
  10. }
复制代码
这里,我们可以看到,我们分配了一个账号:
user:root     # 用户名
pwd:123456 # 暗码
roles:root    # 脚色
db:admin     # 数据库
脚色root有须要做一下表明:
  1. Read:   允许用户读取指定数据库,
  2. readWrite:允许用户读写指定数据库
  3. dbAdmin: 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  4. userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
  5. clusterAdmin:     只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  6. readAnyDatabase:    只在admin数据库中可用,赋予用户所有数据库的读权限
  7. readWriteAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库的读写权限
  8. userAdminAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  9. dbAdminAnyDatabase:  只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  10. root:         只在admin数据库中可用。超级账号,超级权限
复制代码
更具体的内容,请参看官方文档:
https://docs.mongodb.com/manual/reference/built-in-roles/#dbAdmin
好了,创建好用户之后,我们重启MongoDB服务,在设置文件中打开--auth参数,大概直接在下令行内里指定auth参数,重新登陆:
  1. [root@VM-0-14-centos mongo_27017]# mongo
  2. MongoDB shell version v4.0.6
  3. connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
  4. Implicit session: session { "id" : UUID("5f2b0fa6-a1e3-4aaf-b43f-3525e19c33d2") }
  5. MongoDB server version: 4.0.6
  6. >
  7. > use admin
  8. switched to db admin
  9. > show users
  10. 2020-10-28T23:42:06.127+0800 E QUERY  [js] Error: command usersInfo requires authentication :
  11. _getErrorWithCode@src/mongo/shell/utils.js:25:13
  12. DB.prototype.getUsers@src/mongo/shell/db.js:1763:1
  13. shellHelper.show@src/mongo/shell/utils.js:859:9
  14. shellHelper@src/mongo/shell/utils.js:766:15
  15. @(shellhelp2):1:1
  16. > db.auth("root","123456")
  17. 1
  18. > show users
  19. {
  20.     "_id" : "admin.root",
  21.     "user" : "root",
  22.     "db" : "admin",
  23.     "roles" : [
  24.         {
  25.             "role" : "root",
  26.             "db" : "admin"
  27.         }
  28.     ],
  29.     "mechanisms" : [
  30.         "SCRAM-SHA-1",
  31.         "SCRAM-SHA-256"
  32.     ]
  33. }
复制代码
可以看到,当我们第一次使用show users的下令查察用户的时候,体系拒绝了我们,表现:
Error: command usersInfo requires authentication
然后我们举行权限校验:
use admin
db.auth("root","123456")
这下可以了。
不知道大家有没有注意到一个细节,我们登陆的时候,使用mongo下令登陆的,然后举行用户认证,有没有一种方法可以直接在登陆的时候就举行用户认证呢?答案是有的。
登陆方法一:
mongo
use admin
db.auth("user":"password")
登陆方法二:
mongo -u "user" -p "password"
如下:
  1. [root@VM-0-14-centos mongo_27017]# mongo -u "root" -p "123456"
  2. MongoDB shell version v4.0.6
  3. connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
  4. Implicit session: session { "id" : UUID("ef872d7a-77d9-43c2-bf3d-e04867379c0a") }
  5. MongoDB server version: 4.0.6
  6. > use admin
  7. switched to db admin
  8. > show users
  9. {
  10.     "_id" : "admin.root",
  11.     "user" : "root",
  12.     "db" : "admin",
  13.     "roles" : [
  14.         {
  15.             "role" : "root",
  16.             "db" : "admin"
  17.         }
  18.     ],
  19.     "mechanisms" : [
  20.         "SCRAM-SHA-1",
  21.         "SCRAM-SHA-256"
  22.     ]
  23. }
  24. >
复制代码
到这里,我们已经学会了第一次登陆MongoDB之后,怎样举行初始用户设置、怎样开启MongoDB的认证模式(--auth参数)、以及在登录的时候怎样举行用户认证,用户这块儿另有许多其他内容,下一节我们展开说。
以上就是MongoDB 用户相关操作的具体内容,更多关于MongoDB 用户操作的资料请关注脚本之家别的相关文章!

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

  • 微信公众号

  • 商务合作