之前用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. HDOJ(HDU) 2192 MagicBuilding(用Java的Map做了下)

    Problem Description As the increase of population, the living space for people is becoming smaller a ...

  2. HDOJ 2073 无限的路

    Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还 ...

  3. UVAlive3415 Guardian of Decency(最大独立集)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34831 [思路] 二分图的最大独立集. 即在二分图中选取最多的点, ...

  4. Jenkins 十二: 集成 selenium 测试

    我的selenium采用的是python版本. 其实 selenium java版本也类似. 1. 在jenkins里面新建selenium 测试项目. 源码管理采用 “Subversion”,输入 ...

  5. UTR#2 T1

    题意:给定一个n,以下n个数(假定为fi),要求构造一个n个数的序列,使得这个序列每一个位置的最大上升子序列的长度等于对应的fi. 其实这道题是个很简单的题,之前7月也在BC上做到过,为什么要写呢,因 ...

  6. Visual Studio的2个有趣的插件:声音控制和放屁:)

    .NET Slave | Talk to, hear, touch and see your code介绍了2个有趣的Visual Studio的插件,你可以通过它们和你的代码对话. 声音控制(Voi ...

  7. C#修饰符

    声明类的顺序: 访问修饰符+类修饰符 +class+类名 { 成员修饰符+ 成员类型 +成员名称; } C#中类及类型成员权限访问修饰符有以下四类:public,private,protected,i ...

  8. 数据库框架 Litepal

    1.导包 dependencies {   compile 'org.litepal.android:core:1.4.1' } 2.在asstes中建立litepal.xml文件 <?xml ...

  9. docker入门(二)

    打造自己的镜像 首先我们启动busybox镜像为容器,在该容器中安装一个小工具,再将这个容器保存为新的镜像 首先我们下载一个镜像,再启动容器 [root@centos ~]# docker pull ...

  10. mac eclipse配置 tomcat

    mac由于各种软件不兼容,某些软件对于开发来说很苦恼,tomcat这个东西一直不知道怎么弄,项目都开了好几天了,一直用在虚拟机上用windows系统,但是用虚拟机明显感觉到电池待机时间更短了,所以就研 ...