zoukankan      html  css  js  c++  java
  • MongoDB 入门之基础 DCL

    此文章主要记录部分主要的 MongoDB 的 DCL 操作。

    MongoDB 默认不需要用户名和密码就可以用 mongodb.exe 登录

    一、开启 MonogoDB 的权限模式

    修改 MongoDB 服务的注册语句,修改加入 --auth 参数,详情见MongoDB 入门之安装篇

    "$MONGODB_HOMEinmongod.exe" --config "$MONGODB_HOMEmongo.cfg" --install --auth
    C:WindowsSystem32sc.exe create MongoDB binPath= ""$MONGODB_HOMEinmongod.exe" --service --auth --config="$MONGODB_HOMEmongo.cfg"" DisplayName= "MongoDB 2.6 Standard" start= "auto"

    或者在mongod.cfg 中添加配置

    auth=true

    二、用户权限管理

    • 创建用户
      > db.addUser("user","abc123_")
      WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
      Successfully added user: { "user" : "user", "roles" : [ "dbOwner" ] }
      >

      可以看到当执行 addUser 命令是出现 wraning,虽然创建成功了,但是 MongoDB 建议使用 createUser。

      > db.createUser({
      ...   user:"user",
      ...   pwd:"abc123_",
      ...   roles:[
      ... {
      ... role:"dbOwner",
      ... db:"mydb"
      ... }
      ...   ]
      ... })
      Successfully added user: {
              "user" : "user",
              "roles" : [
                      {
                              "role" : "dbOwner",
                              "db" : "mydb"
                      }
              ]
      }
      >

      如果 MongoDB 开启了权限模式,并且某一个数据库没有任何用户时,在不验证权限的情况下,可以创建一个用户,当继续创建第二个用户时,会返回错误,若想继续创建用户则必须登录。

      2014-10-16T10:40:41.904+0800 Error: couldn't add user: not authorized on mydb to execute command { createUser: "test", pwd: "xxx", roles: [ { role: "dbOwner", db: "mydb" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004
      >
    • 创建超级管理员
      创建超级管理员需要未开启权限模式的情况下执行。如果已开启权限而在 admin 下创建超级管理员,会出现如下错误

      > db.createUser({
      ...   user:"admin",
      ...   pwd:"admin",
      ...   roles:[
      ... {
      ... role:"userAdminAnyDatabase",
      ... db:"admin"
      ... }
      ...   ]
      ... })
      2014-10-16T10:48:01.223+0800 Error: couldn't add user: not authorized on admin to execute command { createUser: "admin", pwd: "xxx", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004
      >

      关闭权限模式创建超级管理员

      > use admin
      switched to db admin
      > db.createUser({
      ...   user:"admin",
      ...   pwd:"admin",
      ...   roles:[
      ... {
      ... role:"userAdminAnyDatabase",
      ... db:"admin"
      ... }
      ...   ]
      ... })
      Successfully added user: {
              "user" : "admin",
              "roles" : [
                      {
                              "role" : "userAdminAnyDatabase",
                              "db" : "admin"
                      }
              ]
      }
      >

      如果使用 addUser 创建超级管理员还必须切换到 admin 数据库。

    • 删除用户
      > db.dropUser("user")
      true
      > 
    • 登录
      anth 需要登录用户有该数据库的权限
      > use mydb
      switched to db mydb
      > db.auth("user","abc123_")
      1
      >
  • 相关阅读:
    httpclient妙用一 httpclient作为客户端调用soap webservice(转)
    WebService学习总结(转)
    C++的override和final
    C++类const和static成员初始化
    C++数据存储方式
    C++类成员存储大小
    内联函数
    C++接口的概念
    C++深拷贝和浅拷贝
    C++构造函数以及何时被调用
  • 原文地址:https://www.cnblogs.com/tannerBG/p/4026308.html
Copyright © 2011-2022 走看看