美文网首页JAVA后端架构Java学习笔记我爱编程
基于Docker的MongoDB实现授权访问

基于Docker的MongoDB实现授权访问

作者: AI乔治 | 来源:发表于2018-04-23 00:13 被阅读27次

    基于Docker部署一个数据库实例通常比直接在服务器上安装数据库还要简单,Gevin在开发环境中经常使用基于docker的数据库服务,docker也渐渐成为Gevin在Linux上安装MongoDB的首选方式,由于MongoDB默认是不用通过认证就能直接连接的,出于安全考虑,在公网上部署MongoDB时,务必设置authentication机制,以避免类似 "黑客赎金" 问题的发生。

    那么,基于Docker拉起的MongoDB,如何实现通过用户名密码访问指定数据库呢?方法很简单,但前提是要了解MongoDB授权访问的机制,参考资料如下:

    Enable Auth

    Authentication

    Role-Based Access Control

    只要了解MongoDB授权访问机制,直接按下面步骤一步步执行就可以了。

    1、创建MongoDB实例

    为了少写几个命令,Gevin使用Docker Compose来创建MongoDB实例:

    运行如下命令:

    2、创建用户管理员

    首先要进入MongoDB容器内部,连上MongoDB,并切换到 admin 数据库,这步可以通过下面命令完成:

    然后创建一个用户管理员:

    在此我向大家推荐一个架构学习交流群。交流学习群号:575745314   里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

    3、创建访问指定数据库的用户

    创建了用户管理员后,需要退出mongodb,并重新连接,然后用用户管理员访问管理数据库,并为目标数据库创建目标用户,其具体步骤如下:

    (1)重新连接MongoDB数据库

    退出容器,重新用下面命令进入容器即可:

    (2)授权登录管理

    (3)创建访问指定数据库的用户

    这一步的目标是为octblog这个数据库创建一个授权访问用户,首先要从管理数据库切换到octblog数据库,然后才能为octblog添加授权访问用户

    注:

    上面所以操作均为用户管理员执行的,即第二步创建的mongo-admin

    用户管理员的作用是管理用户,MongoDB下的每个数据库,用户都被它管理,除此外,它基本没什么更多权限做其他事情

    MongoDB没有通常意义的超级用户的概念,octblog的授权用户只能被用户管理员创建,而用户管理员只能登陆管理数据库,所以才会有上面(2),(3)两步的麻烦。

    相关文章

      网友评论

      • IT人故事会:经常看别人的分享.感谢别人的分享,感谢!关注了

      本文标题:基于Docker的MongoDB实现授权访问

      本文链接:https://www.haomeiwen.com/subject/olohlftx.html