文档链接:https://docs.mongodb.com/manual/tutorial/enable-authentication/

Pre

个人总感觉数据库的文档结构不太友好, 不太解决问题。以下按照原文档结构翻译:


下面的教程以一个使用了默认认证机制的standalone mongod实例为背景来演示启用认证。

副本和集群分片的账户认证

请参考:

https://docs.mongodb.com/manual/core/security-internal-authentication/

账户管理

在启用access-control前,请先确认在admin数据库中,存在userAdmin或userAdminAnyDatabase角色的账户。

该角色账户拥有以下权限:创建账户、赋予账户角色、废除账户角色、创建/修改账户角色。

在启用access-control前后都可以创建账户。

如果还未创建任何账户便启用access-control,则MongoDB会抛出一个localhost exception,允许用户在admin数据库中创建一个账户管理员账号。一旦管理员账号建立,用户以账户管理员账号登陆后,才能添加其他账户。

步骤

以下步骤演示在未启用access-control的MongoDB实例中首次添加用户,然后开启的操作。

1.    不启用access-control启动MongoDB

mongod --port  --dbpath /data/db

2.    连接到实例(本地)

mongo --port 

3.    创建用户管理员

创建一个userAdminAnyDatabase角色的用户。

> use admin

> db.createUser(
{
user: "UserAdmin",
pwd: "UserAdminPwd",
roles: [{ role: 'userAdminAnyDatabase', db: 'admin' }]
}
)

退出mongo shell

4.    启用access-control,重启mongoDB

使用--auth选项重启mongod实例

mongod --auth --port  --dbpath /data/db

启用access-control之后,用户需要先登陆才能进行操作。用户能够执行的操作由账户归属的角色决定。

5.    以管理员账号登陆

通过mongo shell,用户可以:

  • 在连接实例时认证
  • 进入shell, 通过db.auth()进行用户认证

连接时认证

mongo --port  -u 'UserAdmin' -p 'UserAdminPwd' --authenticationDatabase "admin"

连接后认证

mongo --port 

> use admin

> db.auth('UserAdmin', 'UserAdminPwd')

6.    创建其他账户

一旦登陆了管理员账户之后,就可以通过db.createUser()来创建其他账户。账户可以赋予mongoDB内置的角色权限,也可以自定义角色权限。

Mongo内置用户角色见:https://docs.mongodb.com/manual/core/security-built-in-roles/

自定义用户角色见:https://docs.mongodb.com/manual/core/security-user-defined-roles/

账户管理员账号UserAdmin只有管理账户和角色的权限。若UserAdmin企图执行其他操作,如从test数据库中的foo集合读取数据,MongoDB会返回一个error。

以下是创建一个账户的操作

> use test

> db.createUser(
{
user: "myTester",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ]
}
)

7.    使用myTester账户登陆

连接时认证

mongo --port  -u "myTester" -p "xyz123" --authenticationDatabase "test"

连接后认证

mongo --port 

> use test

> db.auth("myTester", "xyz123" )

myTester用户往集合插入数据

> db.foo.insert( { x: , y:  } )

[Doc]MongoDB用户创建与启用access-control的更多相关文章

  1. MongoDB用户创建

    MongoDB采用基于角色的访问控制(RBAC)来确定用户的访问. 授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作. 用户应该只有最小权限集才能确保最小权限的系统 ...

  2. mongodb用户创建及权限控制

    转载 2017年03月30日 12:36:15 2169 摘要: MongoDB 3.0 安全权限访问控制,在添加用户上面3.0版本和之前的版本有很大的区别,这里就说明下3.0的添加用户的方法. 环境 ...

  3. 【MongoDB】The Access control of mongodb

    In this blog we mainly talk about the access control including limitation of ip, setting listen port ...

  4. mongodb怎么创建数据库和配置用户

    mongodb怎么创建数据库和配置用户,远程连接是不够的,还要上去操作和放数据的. 系统:centos 5.x 环境:mongodb 1.安装mongodb 这步就不说了,大家自己去看Centos安装 ...

  5. 转:Oracle R12 多组织访问的控制 - MOAC(Multi-Org Access Control)

    什么是MOAC MOAC(Multi-Org Access Control)为多组织访问控制,是Oracle EBS R12的重要新功能,它可以实现在一个Responsibility下对多个Opera ...

  6. Oracle R12 多组织访问的控制 - MOAC(Multi-Org Access Control)

    什么是MOAC MOAC(Multi-Org Access Control)为多组织访问控制,是Oracle EBS R12的重要新功能,它可以实现在一个Responsibility下对多个Opera ...

  7. MONGODB用户、角色和权限管理

      最近遇到很多问MONGODB用户认证授权方面的问题,现在特记录下来,与大家共享. 一.概念理解 1.用户概念 Mongodb的用户是由 用户名+所属库名组成 例如: 登录mongo  testdb ...

  8. 使用kibana给不同的用户创建不同的space

    Elastic安全机制 在很多的情况下,出于安全的原因,我们需要对不同的Kibana用户分配不同的用户权限,这样使得他们之间不能互相访问彼此的资源,同 时他们也应该对不同的索引拥有不同的权限,比如读, ...

  9. Linux安装RabbitMQ教程(文件下载地址+安装命令+ 端口开放 + 用户创建 +配置文件模板+端口修改)

    前言 1.安装RabbitMQ前需先安装erlang, 且两者需要版本对应, 否则无法正常启动RabbitMQ (本教程使用22.0.7版本的erlang和3.8.6版本的Rabbitmq) 版本对应 ...

随机推荐

  1. jmeter循环控制器加jdbc req结果配合组合参数遍历

    jdbc请求:jdbc sampler  保存结果中三个变量名 循环控制器:xhkzq     的循环次数填写:${其中一个变量名_#} 循环控制器里面:http sampler ,前置处理器,取消c ...

  2. .net异步委托

    委托Delegate是一个类,定义了方法的类型, 使得可以将方法当做另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大佬使用If-Else(Switch)语句,同时使得程序 ...

  3. LFYZ-OJ ID: 1019 位数问题

    位数问题 问题描述 在所有的N位数中,有多少个数中有偶数个数字3?由于结果可能很大,你只需要输出这个答案对12345取余的值. INPUT 输入一个数N(1<=N<=1000),输入以0结 ...

  4. windows7 java环境配置

    最近在工作碰到了在ie浏览器调用java程序时,出现了一些问题,所以在这里整理一下: jdk的下载地址为:http://666dx.pc6.com/wwb3/jdkx6417.zip 正对于windo ...

  5. mysql root password

    """centos:mysql忘记root密码解决 1.修改MySQL的登录设置: # vim /etc/my.cnf 在[mysqld]的段中加上一句:skip-gra ...

  6. android Button上面的英文字符串自动大写的问题解决

    xml文件中加入: android:textAllCaps="false"

  7. PHP 【二】

    EOF EOF(heredoc)是一种在命令行shell(如sh.csh.ksh.bash.PowerShell和zsh)和程序语言(像Perl.PHP.Python和Ruby)里定义一个字符串的方法 ...

  8. ROS-PCL点云库的安装

    网上各种说安装点云库还慢,中间出现一些没有依赖库的情况,但在我这里都是很顺利,难道是一开始安装了ROS的原因?不是很清楚,暂且将过程写下来. 一,下载PCL $ git clone https://g ...

  9. css 初始化样式

    @charset "UTF-8"; /* reset */ html,body,div,h1,h2,h3,h4,h5,h6,p,dl,dt,dd,ol,ul,li,fieldset ...

  10. VC调用静态库、动态库

    静态库 // 相对路径 或者 绝对路径 #include "yourlib.h" //相对路径 或者 绝对路径 #pragma comment(lib, "yourlib ...