MongoDB 权限认证

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

  和其它数据库同样,权限的管理都差很少同样。mongodb存储全部的用户信息在admin 数据库的集合system.users中,保存用户名、密码和数据库信息。mongodb默认不启用受权认证,只要能链接到该服务器,就可链接到mongod。若要启用安全认证,须要更改配置文件参数authmongodb

  一、首先,不使用--auth参数启动MongoDB数据库

  

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.confwindows

  

 

  二、启动mongo, 启用admin数据库安全

  

 三、创建一个超级用户admin,命令以下:  服务器

  db.createUser( 
  
     user : "admin"
     pwd: "admin123"
     roles: [ { role: "userAdminAnyDatabase" , db: "admin" } ] 
   )

  

  四、查看用户集合spa

  db.system.users.find()3d

  

  五、如今启用authcode

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

  auth = on

   重启mongod

  mongod -f C:\data\mongodb.conf 

  

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

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

  

  启用 auth

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

  

 

  再次执行show dbs

  

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

  

  很遗憾没有权限,admin虽然是超级管理员,可是对具体的数据库,仍是须要有对应的用户,用户是和数据库走的,所以还须要创建ta数据库的用户

  创建针对ta数据库的用户

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

  须要注意的是在创建ta数据库用户的时候必定要先启用ta数据库,不然会出现问题

  use ta

  

 

   

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

  而后再对ta数据库进行相应的操做。

  

相关文章
相关标签/搜索