代码改变世界

MongoDB 2.0.2的安全和身份认证

2012-01-11 22:34  Garland  阅读(321)  评论(0)    收藏  举报

今天在64位的windows7上,下载了一个mongoDB 2.0.2版,想做一个mongoDB的服务,设置几个用户来访问数据,结果设置了好几回,添加的用户总是以莫名其妙的消失告终,匿名依然可以连接mongo,身份认证完全不起作用。我在之前的1.8.4的版本已经做过一回这样的设置,这次还按以前的方法试:

打开一个cmd,先用运行mongod -dbpath D:\mongodb\data\database

再开一个cmd,运行mongo

use admin
db.addUser("username","password") ;
db.auth("username","password") ;

然后自己库加用户

use database
db.addUser("guest","******",true) ;

执行好后,停掉mongod后,用--auth --install来启动

(mongod.exe -logpath  D:\mongodb\log\log.txt  -logappend  -dbpath  D:\mongodb\data\database  -directoryperdb --auth  --install)

再次用cmd打开mongo加上参数

(mongo.exe database -u guest -p ******) 

 

结果问题出现了,,,这样登录失败,

然后一点一点试,只用mongo,不加任何参数,居然可以连上,还可以执行各种操作,但是发现刚才加的用户没有了

use admin
show users
//空的
use database
show users
//也成了空的

 

试过了很多次之后,感觉应该是mongod加上--auth的参数后,之前添加好的user就会消失,我把数据都清掉了,直接运行了

(mongod.exe -logpath  D:\mongodb\log\log.txt  -logappend  -dbpath  D:\mongodb\data\database  -directoryperdb --auth  --install)

然后用mongo不加参数,依然可以连上库,这时,我开加用户admin的用户和database的用户,加好后,断掉了这个控制台,再次用mongo打开,发现再进行操作时,出现了未登录的错误提示,我一看,有戏了,用(mongo.exe database -u guest -p ******)连上库,用户生效了,可以操作,问题解决了。

 

所以感觉可能是2.0版本以后有了小改动,如果用--auth启动后,admin库中没有用户时,可以匿名连上mongo创建用户,如果创建成功库中有了用户后,--auth才会真正生效。