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

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

一、开启 MonogoDB 的权限模式

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

"$MONGODB_HOME\bin\mongod.exe" --config "$MONGODB_HOME\mongo.cfg" --install --auth
C:\Windows\System32\sc.exe create MongoDB binPath= "\"$MONGODB_HOME\bin\mongod.exe\" --service --auth --config=\"$MONGODB_HOME\mongo.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 开启了权限模式,并且某一个数据库没有任何用户时,在不验证权限的情况下,可以创建一个用户,当继续创建第二个用户时,会返回错误,若想继续创建用户则必须登录。

    --16T10::41.904+ 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"
    ... }
    ... ]
    ... })
    --16T10::01.223+ 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_") >

MongoDB 入门之基础 DCL的更多相关文章

  1. MongoDB 入门之基础 DDL

    此文章主要记录部分主要的 MongoDB 的 DDL 操作. db  查看当前所在的数据库(默认 test) > db test > show dbs  查看当前数据库服务器上的数据库名字 ...

  2. MongoDB 入门之基础 DML

    此文章主要记录部分主要的 MongoDB Collection 的 DML 操作. 文章中的 Collection 名字为 yourColl,每一次操作包含以下两条初始数据 { "_id&q ...

  3. MongoDB入门实践

    MongoDB入门实践 简单介绍MongoDB,包括MongoDB的使用场景.和MySQL的对比.安装部署.Java客户端访问及总结 MongoDB? 我们遵循需求驱动技术的原则,通过一个场景来引入M ...

  4. mongodb入门篇

    MongoDB 入门篇 分类: NoSQL, 故障解决 undefined 1.1 数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统 1.1.1 什么是数据? 数据(英语:data) ...

  5. 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用

    在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...

  6. MongoDB入门三:MongoDB shell

    MongoDB shell MongDB shell是一个功能完备的Javascript解释器,可以运行Javascript程序.也可以用于连接MongoDB服务器,执行脚本,对数据库进行操作.类似于 ...

  7. Mongodb FAQ fundamentals(基础篇)

    Mongodb FAQ(基础篇),是官方文档的翻译.如有翻译不到之处,还请谅解. 1.Mongdb是什么数据库? mongodb是一个面向文档(document)的数据库,既不支持表连接,也不支持事务 ...

  8. MongoDB 入门之查询(find)

    MongoDB 入门之查询(find) 1. find 简介 (1)find的第一个参数决定了要返回哪些文档. 空的查询文档会匹配集合的全部内容.默认就是{}.结果将批量返回集合c中的所有文档. db ...

  9. MongoDB入门简介

    MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ...

随机推荐

  1. NYOJ题目34韩信点兵

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAskAAAHiCAIAAACV1MbSAAAgAElEQVR4nO3dPXLjONeG4W8TyrUQx1 ...

  2. 第一个JAVA创建

    1.file-new-java project  创建项目文件夹 2.在项目文件夹new-class 3.java对大小写比较敏感 输入代码 public class HELLOWORD { publ ...

  3. hdu 1257 最少拦截系统

    #include<time.h> #include <cstdio> #include <iostream> #include<algorithm> # ...

  4. sql server 对象资源管理器(一)

    当需要查看具体数据库的所有用户表.存储过程等创建修改等脚本的时候,可以借用视图中的对象资源管理器的详细信息里面获取. 具体操作如下图所示:

  5. CLR via C#(07)-静态类,分部类

    一.      静态类-Static 静态类是一些不能实例化的类,它的作用是将一些相关的成员组合到一起,像我们常见的Math, Console等.静态类由static关键字标识,静态类成员也只能是st ...

  6. VS对路径的访问被拒绝

    问题:权限问题. 1.检查自己电脑账户.是否是Administrator.如果没有启用.在[我的电脑]——[管理]——[本地用户和组]——[用户]——[Administrator]——[属性启用] 2 ...

  7. x86架构的android手机兼容性问题

    x86架构的android手机兼容性问题 http://www.cnblogs.com/guoxiaoqian/p/3984934.html 自从CES2012上Intel发布了针对移动市场的Medf ...

  8. 【JAVA网络流之TCP与UDP 】

    一.ServerSocket java.lang.Object |-java.net.ServerSocket 有子类SSLServerSocket. 此类实现服务器套接字.服务器套接字等待请求通过网 ...

  9. 无废话ExtJs 入门教程七[登陆窗体Demo:Login]

    无废话ExtJs 入门教程七[登陆窗体Demo:Login] extjs技术交流,欢迎加群(201926085) 在这节我们通过前几节讲的内容做一个登陆页面,把前几节讲的内容贯穿一下. 1.代码如下: ...

  10. 攻城狮在路上(壹) Hibernate(九)--- Hibernate的映射类型

    Hibernate采用映射类型作为Java类型和SQL类型的桥梁,对应type属性.分为两种:内置映射类型和客户化映射类型.一.内置映射类型: 1.Java基本类型的Hibernate映射类型: Ja ...