前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB 权限认证

MongoDB 权限认证

作者头像
拓荒者
发布2019-03-14 23:20:47
6910
发布2019-03-14 23:20:47
举报
文章被收录于专栏:运维经验分享运维经验分享

  MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),因为考虑到数据安全的原因特地花了一点时间研究了一下,网上搜出来的解决方法大都是3.0以下的版本的,所以不适合3.0+以上的版本。我现在用的版本是MongoDB3.2.7,在windows10系统上进行的验证,估计在win7/win8上应该类似。

  和其它数据库一样,权限的管理都差不多一样。mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名、密码和数据库信息。mongodb默认不启用授权认证,只要能连接到该服务器,就可连接到mongod。若要启用安全认证,需要更改配置文件参数auth

  1、首先,不使用--auth参数启动MongoDB

复制代码
复制代码
代码语言:javascript
复制
systemLog:
    destination: file
    path: C:\data\dblog\mongod.log
    logAppend: true
storage:
    journal:
        enabled: true
    dbPath: C:\data\db
net:
    port: 27017

#security:
    #authorization: enabled
复制代码
复制代码

  mongod -f C:\data\mongodb.conf

? 2、启动mongo, 启用admin数据库

 3、建立一个超级用户admin,命令如下:  

  db.createUser(?

{?

user:?"admin",?

pwd:?"admin123",?

roles: [ { role:?"userAdminAnyDatabase", db:?"admin" } ]?

}?)

  4、查看用户集合

  db.system.users.find()

  5、现在启用auth

  在重启mongod之前,修改配置文件mongo.config,在最下面加入这么一行

  auth = on

?  重启mongod

  mongod -f C:\data\mongodb.conf?

  然后重启mongo,启用admin数据库,

  显示所有数据库 : show dbs, 发现已经没有权限了

  启用 auth

  db.auth('admin', 'admin123') ?返回1表示成功

  再次执行show dbs

  6、 启用ta数据库,查看该数据库集合

  很遗憾没有权限,admin虽然是超级管理员,但是对具体的数据库,还是需要有对应的用户,用户是和数据库走的,因此还需要建立ta数据库的用户

  建立针对ta数据库的用户

  db.createUser({user:'test1',pwd:'test1',roles:[{role:'readWrite',db:'ta'}]})

  需要注意的是在建立ta数据库用户的时候一定要先启用ta数据库,否则会出现问题

  use ta

  执行?db.auth('test1','test1')

  然后再对ta数据库进行相应的操作。

分类:?MongoDB

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com