文档库 最新最全的文档下载
当前位置:文档库 › mongodb数据库用户名密码

mongodb数据库用户名密码

mongodb数据库用户名密码
mongodb数据库用户名密码

一.安装带安全验证机制的mongodb服务:

在mongodb的安装路径的bin目录下,执行mongod命令使mongodb作为系统的一个服务:指令参考如下:

D:\mongodb\bin>mongod --dbpath D:\data\db --logpath D:\data\Mongodb.log –logappend –serviceName MongoDB --auth --install

这时,系统会多一个名为MongoDB的服务,可以在开始——运行下输入Services.msc 可以查看。指令中的—auth 命令就是为mongodb加上安全验证。--dbpath命令指定数据存放的目录,--logpath命令指定日志文件。如果原本已经存在MongDB服务,可以用以下指令先删除该服务再用以上指令添加Mongodb服务:(该指令对数据库的数据不会产生影响) sc delete mongoDB

二.如果mongodb服务已加入安全验证机制,做如下测试:

1.为管理者账号添加用户名和密码:

D:\mongodb\bin> mongo

MongoDB shell version: 2.4.5

connecting to: test

>use admin #使用管理员账号

switched to db admin

> db.addUser('name','password') #加入用户名和密码的指令

{

"user" : "name",

"readOnly" : false,

"pwd" : "e7fa8c32338a5d2b2359898095ede6f7",

"_id" : ObjectId("52c0e91e5c69479a4bf19922")

}

>ctrl + c 退出

2.管理者账号验证:

D:\mongodb\bin> mongo

MongoDB shell version: 2.4.5

connecting to: test

>show dbs #没有输入用户名密码,会出现以下出错误:

Mon Dec 30 11:41:39.656 JavaScript execution failed: listDatabases failed:{ "ok"

: 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:L46

> use admin #使用管理者账号

switched to db admin

>show dbs #即使在管理者账号下,没有输入用户名密码,也会出现以下出错误:Mon Dec 30 11:41:39.656 JavaScript execution failed: listDatabases failed:{ "ok": 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:L46

> db.auth('nnn','mmm') #如果输入的用户名密码不正确,会出现如下错误

Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" }

> db.auth('name','password') #当验证成功会输出1

1

> show dbs #这时就可以对数据库进行操作

admin 0.0625GB

local 0.03125GB

mymongo 0.0625GB

test (empty)

3.为普通账号创建用户名密码:

在加入安全验证后,必须要为管理者admin账号加入用户名和密码,而其他普通账号可以加入用户名密码,也可以不加入。

D:\mongodb\bin> mongo

MongoDB shell version: 2.4.5

connecting to: test

> use admin

switched to db admin

> db.auth('name','password') #先要验证管理者账号

1

> use mymongo #选择普通账号

switched to db mymongo

> db.mymongo.find() #普通账号没有加入用户名密码前可以操作

{ "_id" : ObjectId("52b7b54277e027dceef452e7"), "name" : "lzf" }

> db.addUser('name1','password1') #为普通账号加入用户名密码

{

"user" : "name1",

"readOnly" : false, es

"pwd" : "ba42b4992a16552be7af868d232ad22e",

"_id" : ObjectId("52c0fc9fce02de7cae298260")

}

>ctrl + c 退出

4.普通账号验证:

D:\mongodb\bin> mongo

MongoDB shell version: 2.4.5

connecting to: test

> use mymongo

Switched to db

mymongo > db.mymongo.find() #没有验证,不能对mymongo进行操作

error: { "$err" : "not authorized for query on mymongo.mymongo", "code" : 16550

}

> db.auth('name1','password1') #验证

1

> db.mymongo.find() #验证通过后,可以操作,但只可以对该账号操作

{ "_id" : ObjectId("52b7b54277e027dceef452e7"), "name" : "lzf" }

> show dbs #会出错,要管理者账号验证才能执行该指令

Mon Dec 30 13:02:54.640 JavaScript execution failed: listDatabases failed:{ "ok"

: 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:L46

三.取消安全验证的做法:

删除MongoDB服务(不会对数据库的数据产生影响):

sc delete MongoDB

重新安装一个服务,这时不要加入–auth参数:

D:\mongodb\bin>mongod --dbpath D:\data\db --logpath D:\data\Mongodb.log –logappend –serviceName MongoDB --install

重启mongodb数据库,此时已经不需要安全验证了

四.在python的pymongo模块中的相关指令:

添加用户名密码:

db.add_user(‘name’,’;password’)

验证用户名密码:

db.authenticate(‘name’,’password’)

相关文档