mongodb 认证方式(version:3.0.4)

来源:互联网 发布:上youtube代理软件 编辑:程序博客网 时间:2024/06/10 10:35

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

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

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

mongodb $ cd bin

不开启验证的方式启动mongodb

bin $ ./mongod -dbpath ../blog

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

bin $ ./mongo

添加admin用户

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

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

use blogdb.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 blogdb.dropUser('testuser') 

关闭验证重启数据库
在mongo里修改system.version文档里面的authSchema版本为3(旧版本)

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

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

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

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

这一次可以用Robomongo成功登陆~

0 0
原创粉丝点击