zoukankan      html  css  js  c++  java
  • mongodb的认证

      mongodb默认情况下,启动是不带安全认证的。这个时候,可以进去admin数据库下添加超级管理员。

    use admin
    db.addUser("root","abcd")

      然后,各个数据库下,可以为各自的数据库添加数据库级普通管理员。

     use test
     db.addUser("test_user","efgh")

      这时一个只能操作test目录的普通管理员就生成了。和关系数据库那种grant * on test.*to test_user@'efgh'是不是感觉完全不一样呢?

      mondodb没办法把添删改查分别进行细致的授权,只能进行“读写权限”和”只读权限“的区分,如果想添加一个只读权限的管理员,可以在addUser方法中传入第三个参数true,就行了。是不是很方便呢?
      
      addUser("user_read_only","ijkl",true)

      在启动mongodb数据库时,只要在shell里带上参数--auth,数据库即可启动安全认证了,这时进入相关的数据库就需要验证是否有权限了。

      mongod --auth
    ======================
      use test

      db.auth("user_read_only","ijkl")

      db.test.find()

      db.auth("test_user","efgh")

      db.test.insert({"x":2})

      认证的工作原理是,每个数据库下会有一个保留的集合system.users,这个集合里的文档格式是{"user":username,"readOnly":true,"pwd",password hash}。

      如果想删除某个用户,可以
      
    use test

    db.system.users.remove({"user":"test_user"})

      另外,在mongodb启动时,除了可以带--auth参数,还可以带别的参数,比如--dbpath 指定数据库保存的目录,--port 指定数据库监听的端口,--fork 以守护进程的方式运行mongodb,创建服务器进程,--logpath 指定日志输出路径, --config 指定配置文件。

      mongod --port 5586 --fork --logpath /home/adang/mongodb.log

  • 相关阅读:
    1096 Consecutive Factors (20分)
    js-实现省市区地址选择器三级联动
    js-面向对象编程基础
    js-滑块拼图登录验证
    js-promise以及async、await实现简易红绿灯
    js-前端分页效果的实现
    js-ajax方法详解以及封装
    js-jsonp跨域请求原理以及jsonp的封装
    js-实现常见的拖拽效果(表单滑块验证)
    js本地存储-localStorage和cookie详解以及区别
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426577.html
Copyright © 2011-2022 走看看