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

mongodb 认证方式(version:3.0.4)

2015-08-31 20:00 344 查看
之前一直在本机上跑,前段时间把后台架到云服务器上了,在settings里加上了username和password,希望同步的时候修改一下settings就能在本地测试。

因为云服务器端数据库连接需要验证,于是在本地也打算加上身份验证,而mongodb默认是没有验证的。

在网上搜索了一下,方法都比较旧,主要是在本地的mongodb中新增一个user:

进入mongodb下的bin

mongodb $ cd bin


不开启验证的方式启动mongodb

bin $ ./mongod -dbpath ../blog


输入mongo命令,进入test数据库

bin $ ./mongo


添加admin用户

use admin
db.createUser({
user:'admin',
pwd:'admin',
roles:[{role:'userAdminAnyDatabase',db:'admin'}]
})


切换到我的数据库(blog 为我的数据库名称),在我的数据库下创建用户

use blog
db.createUser({
user:'testuser',
pwd:'test',
roles:[{role:'dbOwner',db:'blog'}]
})


重启服务器,开启验证

bin $ ./mongod -dbpath ../blog --auth


使用Robomongo登陆,显示Authentication Failed,查看服务器日志:

2015-08-31T17:39:46.416+0800 I ACCESS   [conn46] Failed to authenticate testuser@blog with mechanism MONGODB-CR: AuthenticationFailed MONGODB-CR credentials missing in the user document


查看文档,发现是因为mongodb验证方式改变,加入了(SCRAM)SHA-1

在mongo里将刚创建的用户删除

use blog
db.dropUser('testuser')


关闭验证重启数据库

在mongo里修改system.version文档里面的authSchema版本为3(旧版本)

use admin
db.system.version.update({'_id':'authSchema'},{$set:{'currentVersion':3}})
db.system.version.find()


可以看到:{ “_id” : “authSchema”, “currentVersion” : 3 }

删除之前创建的用户,重新创建用户(这一次使用验证方式为MONGODB-CR)

use blog
db.dropUser('testuser')
db.createUser({
user:'testuser',
pwd:'test',
roles:[{role:'dbOwner',db:'blog'}]
})


这一次可以用Robomongo成功登陆~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb 数据库