MongoDB 3.0 安全权限访问控制,在添加用户上面3.0版本和之前的版本有很大的区别,这里就说明下3.0的添加用户的方法。

创建第一个用户(该用户需要有grant权限,即:账号管理的授权权限)

1.以非auth认证方式启动数据库:
[mongodb@hadoop1 ~]$ mongod --dbpath=/mongodb/data --logpath=/mongodb/log/trace.log --logappend  --port=27017 --fork
[mongodb@hadoop1 ~]$ mongo
MongoDB shell version: 3.2.4
connecting to: test
> show dbs
local  0.000GB      #当前只有一个local库,admin库是不存在的
> 2.在指定的数据库下创建用户
> use admin         #帐号是跟着库走的,所以要在指定库里创建用户,必须也在指定库里验证(auth)
switched to db admin
> db.createUser(
...    {
...  user: "dba",
...  pwd: "dba",
...  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
...    }
... );
> user: 用户名
pwd:  密码
roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指
定内置角色和用户定义的角色。 role里的角色 可以选:Built-In Roles(内置角色):
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase,userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
7. 内部角色:__system

  

  刚建立了拥有userAdminAnyDatabase 角色的第一个用户"dba".可以通过这个角色来创建、删除用户

开启auth认证方式启动数据库

[mongodb@hadoop1 ~]$ mongod --dbpath=/mongodb/data --logpath=/mongodb/log/trace.log --logappend  --auth --port=27017 --fork
[mongodb@hadoop1 ~]$ mongo
MongoDB shell version: 3.2.4
connecting to: test
> use admin               #因为是在admin下面添加的帐号,所以要到admin下面验证(连接)。
switched to db admin
> show dbs;
2016-03-27T10:44:27.039-0400 E QUERY    [thread1] Error: listDatabases failed:{"ok" : 0,"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }","code" : 13
} > db.auth('dba','dba');   #相当于输入用户名/密码验证(连接)
1
> show dbs;
admin  0.000GB
local  0.000GB
>

创建两个测试用户

> use admin
> db.auth('dba','dba');
> use test                #切换到test数据库,这两个用户是在test下创建的
switched to db test
> db.createUser(
...  {
...    user: "polestar",
...    pwd: "polestar",
...    roles: [{ role: "read", db: "test" }]
...  }
... )
> db.createUser(
...  {
...    user: "polestar_rw",
...    pwd: "polestar",
...    roles: [ { role: "readWrite", db: "test" }]
...  }
... );
> > show users;            #test数据库下只有两个用户
{"_id" : "test.polestar","user" : "polestar","db" : "test","roles" : [{"role" : "read","db" : "test"}]
}
{"_id" : "test.polestar_rw","user" : "polestar_rw","db" : "test","roles" : [{"role" : "readWrite","db" : "test"}]
}
>
> use admin;           #admin数据库下只有一个用户
switched to db admin
> show users;
{"_id" : "admin.dba","user" : "dba","db" : "admin","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}]
}
>

  

  有没有一个超级权限?不仅可以授权,而且也可以对集合进行任意操作?答案是肯定的,只是不建议使用。那就是role角色设置成root。

创建超级权限用户

> use admin;
switched to db admin
> db.auth('dba','dba')
1
> db.createUser(
...   {
... user: "root",
... pwd: "root",
... roles: [{ role: "root", db: "admin" }]
...   }
... )
> > db.auth('root','root')         #超级用户可以垮裤插入、查询
1
> use test
switched to db test
> db.abc.insert({"a":1,"b":2})
WriteResult({ "nInserted" : 1 })
> db.abc.find()
{ "_id" : ObjectId("56f7fa72a219e00610fe75cb"), "a" : 1, "b" : 2 }
> 

  因为帐号都是在当前需要授权的数据库下授权的,那要是不在当前数据库下会怎么样?

> use admin
switched to db admin
> db.createUser(
...   {
... user: "mgdb",
... pwd: "mgdb",
... roles: [{ role: "readWrite", db: "test" }]  #在admin库下创建test库的帐号
...   }
... )
>> show users;
{"_id" : "admin.dba","user" : "dba","db" : "admin","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}]
}
{"_id" : "admin.root","user" : "root","db" : "admin","roles" : [{"role" : "root","db" : "admin"}]
}
{"_id" : "admin.mgdb","user" : "mgdb","db" : "admin","roles" : [{"role" : "readWrite","db" : "test"}]
}
> > use test
switched to db test
> db.auth('mgdb','mgdb');
Error: Authentication failed.    #在admin下创建的帐号,不能直接在其他库验证,
0
> use admin                      #只能在帐号创建库下认证,再去其他库进行操作
switched to db admin
> db.auth('mgdb','mgdb');
1
> use test
switched to db test
> db.abc.insert({"a":1111,"b":2222})
WriteResult({ "nInserted" : 1 })
> 

Mongodb 3.0 创建用户相关推荐

  1. python连接mongodb数据库、创建用户_mongodb对数据库创建用户名和密码

    MongoDB 有一个用户管理机制,简单描述为管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员.管理员通常没有数据库的读写权限,只有操作用户的权限,我们只需要赋予管理员 userA ...

  2. MongoDB给数据库创建用户

    转自http://www.imooc.com/article/18439 一.先以非授权的模式启动MongoDB 非授权: linux/Mac : mongod -f /mongodb/etc/mon ...

  3. win7安装mysql8.0创建用户_CentOS如何安装MySQL8.0、创建用户并授权的详细步骤

    # 安装相关软件 yum install -y gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel make cmake # 获取MySQL ...

  4. mysql8.0.11创建用户报错_mysql8.0创建用户授予权限报错解决方法

    我遇到错误一:Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to ...

  5. mysql8.0 创建用户并授权

    使用root  进入msyql create user teacher identified by '123'; 创建用户的语法   create user (账号)  identified by ( ...

  6. mysql 8.0 创建用户

    更改超管密码 alter user 'root'@'localhost' identified by '123456'; 创建用户和密码 创建用户 create user 'fox'@'%' iden ...

  7. mysql8.0创建用户授予权限报错解决方法

    Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your My ...

  8. mysql8.0如何授权_MySQL8.0 创建用户及授权

    什么时候会用到 对接外系统时,需要给其余系统开放访问权限 本系统中,分权限管理数据,防止root权限删库跑路

  9. (万里开源)greatdb mysql 8.0以上版本创建用户并授权远程连接

    (万里开源)greatdb 或者 MySQL更新到8.0以上版本后,在创建连接远程的用户的时候和之前5.7的版本有了很大的不同,不能使用原来同时创建用户和授权的命令. 会有语法报错: 以下是记录的(万 ...

最新文章

  1. 八皇后问题 回溯法hdu2553
  2. C语言变长数组 struct中char data[0]的用法
  3. [蓝桥杯][2017年第八届真题]发现环
  4. jQuery.position()其实不可靠!
  5. Spring事务管理示例JDBC
  6. 黄聪:详解 ManualResetEvent(转)
  7. java char的意思,java – @(#)字符的含义
  8. 斯坦福与苹果基于Apple Watch检测心率异常,0.5%人群被检出,其中84%患有房颤...
  9. MongoDB 覆盖索引查询
  10. CRMEB二次开发基础接口
  11. 解决“桌面右键单击文件夹鼠标一直转圈”
  12. 迪文屏程序制作。通讯
  13. excel多表数据自动关联
  14. win10动态壁纸怎么设置_技术贴,安卓手机如何设置类似iPhone的炫酷动态壁纸
  15. 正确的计算机锁屏方法快捷键,电脑锁屏快捷键?(电脑快速锁屏以及酷炫快速切换窗口的方法!)...
  16. Android 10 手机端控制车载蓝牙音乐上一首、暂停、下一首、获取音乐信息等流程
  17. Transformer课程 第8课NER案例代码笔记-IOB标记
  18. 4.17 使用阴影/高光命令解决图像曝光不足问题 [原创Ps教程]
  19. 医学图像——医学坐标体系
  20. 基于统计概率和机器学习的文本分类技术 —— 社区产品机器审核机制预研报告...

热门文章

  1. Advanced User Administration
  2. 如何利用回调模式去解决问题
  3. 微软6月补丁日修复7个0day:6个已遭利用且其中1个是为 APT 服务的商用exploit
  4. 犯罪分子社工GoDaddy 员工,获得密币相关网站域名的控制权
  5. 微软开源用于大规模查找并修复漏洞的开发者工具 Project OneFuzz 框架
  6. 无人机在高楼区做倾斜摄影的地籍建模项目报告
  7. JS方面重点摘要(一)
  8. SQL Server全文搜索
  9. 一句话设置UITextField、UITextview的字数限制和placeholder
  10. DevExpress控件学习总结(转)