设为首页 收藏本站
查看: 1099|回复: 0

[经验分享] MongoDB启用身份验证

[复制链接]
发表于 2018-10-25 06:45:42 | 显示全部楼层 |阅读模式
  MongoDB支持各种认证机制,以下启用独立 mongod 实例的访问控制,并使用默认身份验证机制。
  用户管理员
  启用访问控制后,请确保在 admin 数据库中拥有 userAdmin 或 userAdminAnyDatabase 角色的用户。该用户可以管理用户和角色,例如:创建用户,授予或撤销用户角色,以及创建或修改定义角色。 可以在启用访问控制之前或之后创建用户。如果在创建任何用户之前启用访问控制,MongoDB会提示本地主机异常,允许在管理数据库中创建用户管理员。创建后,必须作为用户管理员进行身份验证,以根据需要创建其他用户。
  以下过程首先将用户管理员添加到运行无访问控制的 MongoDB 实例,然后启用访问控制。


  • 创建用户管理员  在管理数据库中,添加具有 userAdminAnyDatabase 角色的用户。以下在 admin 数据库中创建用户justin:

  注意:创建用户的数据库(在此示例中为admin)是用户的身份验证数据库。用户将对该数据库进行身份验证,但用户可以在其他数据库中担任角色; 即用户的认证数据库不限制用户的权限。
  

[root@localhost bin]# pwd  
/opt/mongodb-3.4.6/bin
  
[root@localhost bin]# ./mongo --port 9981
  
MongoDB shell version v3.4.6
  
connecting to: mongodb://127.0.0.1:9981/
  
MongoDB server version: 3.4.6
  
Welcome to the MongoDB shell.
  
For interactive help, type "help".
  
For more comprehensive documentation, see
  http://docs.mongodb.org/
  
Questions? Try the support group
  http://groups.google.com/group/mongodb-user
  
Server has startup warnings:
  
2017-12-20T00:45:44.490+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
  
2017-12-20T00:45:44.490+0800 I CONTROL  [initandlisten]
  
> use admin
  
switched to db admin
  
> db.createUser(               #回车
  
... {                                    #回车,下同
  
... user:"justin",
  
... pwd:"51cto",
  
... roles:[{role:"userAdminAnyDatabase",db:"admin"}]
  
... }
  
... )
  
Successfully added user: {
  "user" : "justin",
  "roles" : [
  {
  "role" : "userAdminAnyDatabase",
  "db" : "admin"
  }
  ]
  
}
  
> exit
  
bye
  
[root@localhost bin]#
  

DSC0000.jpg



  • 修改mongodb配置文件,启用认证  

      
    [root@localhost bin]# cat ../conf/mongodb.conf
      
    bind_ip = 0.0.0.0
      
    port = 9981
      
    fork = true
      
    dbpath = /opt/mongodb-3.4.6/data
      
    pidfilepath = /var/run/mongod.pid
      
    logpath = /opt/mongodb-3.4.6/logs/mongod.log
      
    logappend = true
      
    auth = true
      
    [root@localhost bin]# systemctl restart mongodb.service
      
    [root@localhost bin]#

  

3. 以用户管理员身份进行连接和验证  
在连接期间进行身份验证,使用-u ,-p 和--authenticationDatabase
  
连接后验证,切换到身份验证数据库(在这种情况下为admin),并使用db.auth(,)方法进行身份验证
  

  [root@localhost bin]# ./mongo --port 9981 -u "justin" -p "51cto" --authenticationDatabase "admin"
  MongoDB shell version v3.4.6
  connecting to: mongodb://127.0.0.1:9981/
  MongoDB server version: 3.4.6

  exit
  bye
  [root@localhost bin]# ./mongo --port 9981
  MongoDB shell version v3.4.6
  connecting to: mongodb://127.0.0.1:9981/
  MongoDB server version: 3.4.6
  use admin
  switched to db admin
  db.auth("justin","51cto")
  1
  exit
  bye
  [root@localhost bin]#
  

  
4. 根据需要创建其他用户
  
当管理员用户进行身份验证通过之后,可使用db.createUser()创建其他用户。可以为用户分配任何内置角色或用户定义的角色。
  

  myUserAdmin用户只具有管理用户和角色的权限。如果使用myUserAdmin尝试执行任何其他操作,例如从ywbz数据库中的foo集合读取数据,MongoDB将返回错误。
  以下操作将用户 csdp添加到在ywbz数据库中并给予ywbz数据库的readWrite角色以及在reporting数据库中读取角色。
  注意:创建用户的数据库(在本示例中为ywbz)是该用户的身份验证数据库。虽然用户将对该数据库进行身份验证,但用户可以在其他数据库中担任角色; 即用户的认证数据库不会限制用户的权限。
  

[root@localhost bin]# ./mongo --port 9981 -u "justin" -p "51cto" --authenticationDatabase "admin"  
MongoDB shell version v3.4.6
  
connecting to: mongodb://127.0.0.1:9981/
  
MongoDB server version: 3.4.6
  
> use ywbz
  
switched to db ywbz
  
> db.createUser(
  
... {
  
... user:"csdp",
  
... pwd:"51cto",
  
... roles:[{role:"readWrite",db:"ywbz"},      #用户csdp在数据库ywbz中执行读写操作权限
  
... {role:"read",db:"reporting"}]                 #用户csdp在数据库reporting中有读操作权限
  
... }
  
... )
  
Successfully added user: {
  "user" : "csdp",
  "roles" : [
  {
  "role" : "readWrite",
  "db" : "ywbz"
  },
  {
  "role" : "read",
  "db" : "reporting"
  }
  ]
  
}
  
> exit
  
bye
  
[root@localhost bin]#
  

  

DSC0001.jpg




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-626054-1-1.html 上篇帖子: Mongodb监控指标 下篇帖子: mongodb Profiling 通过慢查询日志分析查询慢的原因 相应优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表