您的位置:首页 > 数据库 > Mongodb

MongoDB访问权限控制(增加用户名和密码)

2015-04-01 15:31 471 查看
本文讲述如何启动带有访问权限(要有帐户和密码才可以连接到数据库)的MongoDB数据库,包括如何创建帐户和密码(看似简单,实际会遇到很多问题。我搞了几个小时才弄好)。MongoDB 默认情况下并没有使用帐户和密码,如果在启动时没有使用-auth选项的话(后面有例子)。

有些操作需要以管理员的身份运行cmd程序,为了讲述方便和保证成功,所有的命令行窗口均以管理员的身份运行。

本机环境如下:

1、MongoDB(mongo.exe等可执行文件)安装目录:D:\Program Files\MongoDB 2.6 Standard\bin

2、数据库存放目录:D:\Program Files\MongoDB 2.6 Standard\data\db

3、数据库日记文件存放目录:D:\Program Files\MongoDB 2.6 Standard\data\log

(MongoDB的安装与配置见http://blog.csdn.net/marlboro_1999/article/details/41722315)

启动带有访问权限的MongoDB数据库的方法

1、首先以普通方式(就是不带-auth选项的命令,MongoDB默认就是以这种方式启动的)启动MongoDB服务,例如:

D:\Program Files\MongoDB 2.6 Standard\bin>mongod -dbpath "D:\Program Files\Mongo

DB 2.6 Standard\data\db" -logpath "D:\Program Files\MongoDB 2.6 Standard\data\lo

g\dblog.log" -serviceName "MongoDB"

然后切换到admin数据库(必须的?),例如:

> use admin

switched to db admin

然后创建帐户名和密码,例如:

> db.addUser("WessengerUser","123")

WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead

Error: couldn't add user: User and role management commands require auth data to have schema version 3 but found 1 at src/mongo/shell/db.js:1004

如果出现这个错误,可接着执行如下命令(原因见http://jingyan.baidu.com/article/6b97984d999ff31ca2b0bfce.html):

> db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 });

Successfully added user: { "user" : "WessengerUser", "roles" : [ "root" ] }

创建帐户和密码成功之后,重启MongoDB以使之生效,这时候再次启动MongDB时,就需要使用-auth选项了:

D:\Program Files\MongoDB 2.6 Standard\bin>mongod -dbpath "D:\Program Files\Mongo

DB 2.6 Standard\data\db" -logpath "D:\Program Files\MongoDB 2.6 Standard\data\lo

g\dblog.log" -auth -serviceName "MongoDB"

然后用mongo.exe客户端去连接,发现刚开始连接到test数据库是,输出很简洁:

D:\Program Files\MongoDB 2.6 Standard\bin>mongo

MongoDB shell version: 2.6.5

connecting to: test

而不是像之前没有添加访问权限时的一大串了。

添加访问权限之后,如果要使用某个数据库,必须先进入admin数据库,然后再使用刚才创建的帐户和密码登录,然后才能使用数据库:

> use admin

switched to db admin

> db.auth("WessengerUser","123")

1

> show collections

system.backup_users

system.indexes

system.new_users

system.roles

system.users

system.version

> show dbs

admin      0.078GB

local      0.078GB

wessenger  0.078GB

> use wessenger

switched to db wessenger

到这里就可以对数据库进行你想要的操作了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息