之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB。在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问。

我部署的环境是ubuntu 14.04下MongoDB。首先要开启安全模式的话,在启动MongoDB服务的时候就要加上--auth参数,命令如下:

/usr/local/mongodb/mongod -dbpath=/data/mongodb --fork --port 27017 --logpath=/usr/local/mongodb/log/work.log --logappend --auth

这样的话再连接MongoDB操作的时候就需要一定的权限。

一、首先我们需要在没有加"--auth"权限参数启动服务进行用户权限管理

我们这样启动MongoDB服务:

/usr/local/mongodb/mongod -dbpath=/data/mongodb --fork --port 27017 --logpath=/usr/local/mongodb/log/work.log --logappend --auth

或者编辑 开机启动   /etc/rc.local 下 添加以上指令。

这时不指定用户连接mongodb,是可以登录并操作的,我的操作如下:

root@timeless-HP-Pavilion-g4-Notebook-PC:# /usr/local/mongodb/mongo
MongoDB shell version: 2.6.6
connecting to: test
> show tables
2015-03-10T19:26:59.186+0800 error: {
"$err" : "not authorized for query on test.system.namespaces",
"code" : 13
} at src/mongo/shell/query.js:131
>

可以看到,使用show tables 指令提示 没有权限执行,原因是 我在admin 数据库中添加了用户认证。

> use admin //切换到 admin
switched to db admin
> db.user.find() //查看用户信息提示 没有权限
error: { "$err" : "not authorized for query on admin.user", "code" : 13 }
> use admin
switched to db admin
> db.a
db.addUser( db.adminCommand( db.auth(
> db.auth('root','xxxxx') //数据库超级管理员认证
1 //表示认证成功
//mongoDB 默认没有用户认证 
> use admin
switched to db admin
> db.addUser('sa','sa')
{
"user" : "sa",
"readOnly" : false,
"pwd" : "75692b1d11c072c6c79332e248c4f699",
"_id" : ObjectId("53af835ada88ac42a40917a0")
}
> db.system.users.find()
{ "_id" : ObjectId("53af835ada88ac42a40917a0"), "user" : "sa", "readOnly" : false, "pwd" : "75692b1d11c072c6c79332e248c4f699" }

以上为添加用户的操作

注意 :

1、用户认证只能在指定的数据库中认证。   比如在 admin 中 执行 db.addUser('root','xxxxxxx');   执行认证的时候需要  use admin 然后执行 db.auth('user','xxxxxx');

2、如果有数据库没有设置用户 超级管理员可以 查看并修改该数据库中的数据,已经设置用户超级管理员依然可以查看并修改数据。

3、同时可以指定用户 指定数据库 登陆mongo。   比如

root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/apache243/htdocs# /usr/local/mongodb/mongo  -uroot -p201671zhuang localhost:27017/admin
MongoDB shell version: 2.6.6
connecting to: localhost:27017/admin
>show tables
system.indexes
system.users
system.version
>

二、添加完顶层admin用户,可以用admin账户进行其他用户的设置

如果想让单独的库有单独的用户名就得先从admin登录然后设置相应的用户信息,具体操作如下:


> use test
switched to db test
> show collection
2015-03-10T19:42:33.621+0800 don't know how to show [collection] at src/mongo/shell/utils.js:729
> db.addUser('root','xxxxxxxxxxx');
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "root", "roles" : [ "dbOwner" ] }

以后添加用户 使用 createUser(),提示addUser() 不赞成使用。

> exit
bye
root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/apache243/htdocs# /usr/local/mongodb/mongo -uroot -pxxxxxx localhost:27017/test
MongoDB shell version: 2.6.6
connecting to: localhost:27017/test
>

mongoDB之用户及权限设置的更多相关文章

  1. MongoDB系列---用户及权限管理02

    MongoDB-——Privilege 学习大纲: 1.用户权限管理 2.用户操作 知识回顾:  本系列上一篇博文我们讲述了如何搭建环境以及配置我们的MongoDB,通过搭建环境后我们又学习了如何通过 ...

  2. [vsftp服务]——ftp虚拟用户、权限设置等的实验

    搭建ftp服务器,满足以下要求: 1.允许匿名用户登录服务器并下载文件,下载速度设置为最高2MB/s 2.不允许本地用户登录ftp服务器 3.在服务器添加虚拟用户vuser01.vuser02.vus ...

  3. 关于使用samba用户的权限设置

    首先要保证你的samba安装并配置好,关于安装和配置samba请参考此文章http://blog.csdn.net/linglongwunv/archive/2010/01/19/5212875.as ...

  4. 多站点IIS用户安全权限设置

    如果我们为每个站点都建立一个用户,并设置该用户只有访问本站点的权限,那么就能将访问权限控制在每个站点文件夹内,旁注问题也就解决了 一.这样配置的好处? 不知大家有没有听过旁注?我简单的解释一下吧:有个 ...

  5. Oracle创建用户及权限设置

    oracle用户创建及权限设置 权限: create session create table unlimited tablespace connect resource dba 例: #sqlplu ...

  6. 如何管理MongoDB的用户和权限

    管理用户的创建及使用 创建用户的函数是db.createUser({...}),创建用户时通常需要为该用户添加权限,如read.readWrite权限. 可添加的权限以及说明: 权限 作用 read ...

  7. MYSQL 更改数据库data存储目录 创建用户 创建权限 设置远程访问的权限.

    一. 怎么更改数据库data存储目录:  1. 安装MYSQL. 2. 切换到 C:\Program Files\MySQL\MySQL Server 5.6 3. 新建my.ini. 加入如下配置: ...

  8. 给于用户Agent权限设置

    问题:有一个用户需要有create\alter\drop job人权限.默认是只有sysadmin成员才有这个权限.肯定不能将用户放到这个组 答案:所有JOB都属于msdb库中读取和写入信息.所以,肯 ...

  9. linux(raspbian)下mysql的安装,权限设置和用户管理

    一 MySQL安装:(1) 使用apt-get安装, 由于raspbian是基于Debian的自由操作系统,debian默认自带apt-get指令安装应用因此可以使用来安装 sudo apt-get ...

随机推荐

  1. WCF扩展系列 - 行为扩展(Behaviors)

    原文地址:http://www.cnblogs.com/Creator/archive/2011/05/21/2052687.html 这个系列的第一部分将会重点关注WCF行为(behaviors), ...

  2. A - 棋盘问题

    地图看起来不太大,可以试试深搜,试一下.. 还是比较简单的搜索,竟然一下就过................... #include<stdio.h> #include<)      ...

  3. 什么是ARC

    arc就是自动引用计算.英文名Automatic Reference Counting.在一开始的IOS开发中,内存管理是需要手动的,对某个资源的引用,引用后就对其计算+1,当不再使用就-1,当计算为 ...

  4. python-类和对象(属性、方法)的动态绑定

    动态绑定 # coding=utf-8 ''' 当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性 ''' from types im ...

  5. 转载:linux capability深入分析

    转至http://www.cnblogs.com/iamfy/archive/2012/09/20/2694977.html 一)概述:  1)从2.1版开始,Linux内核有了能力(capabili ...

  6. SVN server的搭建

    当做大的项目是,svn是代码管理的好工具,假设是用自己的server,那么须要搭建SVNserver. Subversion是一款很优秀的svnserver工具,笔者採用VisualSVN serve ...

  7. boost库在工作(15)绑定器与函数对象之三

    前面已经可以优美地解决两个参数的函数给算法for_each调用了,但是又会遇到这样的一种情况,当需要三个参数或者三个以上的参数给算法for_each调用呢?从STL里的绑定器bind1st,显然是不行 ...

  8. PHPExcel讀取excel數據

    require_once 'PHPExcel.php'; $PHPReader = new PHPExcel_Reader_Excel2007(); $filePath = 'wjyl.xlsx'; ...

  9. Linux中date命令的各种实用方法--转载

    在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,自己也曾经为时间的各种表示方法和如何修改时间而困惑,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的 ...

  10. Google开发规范

    v0.2 - Last updated November 8, 2013 源自 Google's C++ coding style rev. 3.274 目录 由 DocToc生成     头文件   ...