Mongodb 3.2.7 auth认证与mongoVUE支持相关。
一直搞oracle的人,最近被通知要搭建个Mongodb环境。 只能自学上了,踩了不少坑。在Mongodb的官网上 下载了 最新的linux 64位版本 3.2.7 . 有gz和 rpm包两种 ,安装步骤这里简略。可以参考:http://www.osyunwei.com/archives/7629.htmlhttp://www.yiibai.com/mongodb/mongod
一直搞oracle的人,最近被通知要搭建个Mongodb环境。 只能自学上了,踩了不少坑。
在Mongodb的官网上 下载了 最新的linux 64位版本 3.2.7 .
有gz和 rpm包两种 ,安装步骤这里简略。可以参考:
http://www.osyunwei.com/archives/7629.html
http://www.yiibai.com/mongodb/mongodb_create_database.html
这里说下几个注意的:
1.mongodb 不是创建个数据库就马上有的,需要往里面插入数据才有。
2. 3.2.7版本默认是没有 admin库的。需要创建root权限级别用户。
db.createUser(user:"sa",pwd:"sa",roles:[{role:"root",db:"admin"}]})
3.mongodb权限级别很细致,可以在网上找到很多文章。这里简介个 dbOwner的权限
db.createUser({user:"test",pwd:"test",roles:[{role:"dbOwner",db:"dbname"}]})
4.凡是看到 addUser的文章,就不用看了,因为这是老版本的。3.0以上的版本都换成creatUser()
5.数据是否启用auth认证 ,可以在配置文件 mongodb.conf文件设置 auth=true,第一次启动数据库的时候先注释掉。
二·
下面重点来了,说说这个坑了我很久的 3.2.7的认证机制。
在开启认证之前创建了一个管理员帐户 sa 和一个普通用户。然后关掉数据库,改配置文件,开启auth ,然后再登入数据库后,db.auth("user","password") 认证。
然后用 show collections测试。 数据库命令行操作没问题。
结果开发人员用软件登录的时候 直接报错,说认证报错。 我以为是自己开启的auth的问题,重新做了N多遍的测试。
开发人员用的软件 mongoVUE 版本是1.6.9的。
最后发现mongodb 3.2.7的authschema 是 5级别的。而3.0一下版本的是 3 级别。所以之前创建的任何帐户加密机制都是(SCRAM-SHA-1),而3.0版本以下的创建出来的帐户都是 (MONGODB-CR). 这点可以通过 admin下 db.system.users.find() 查看。
所以 :
1.要删除之前所有创建过的user
2.修改authSchema级别
> var schema = db.system.version.findOne({'_id':'authSchema'})
>schema.currentVersion=3
>db.system.version.save(schema)
3.重建user
4.关闭数据库 开启认证,重新连接。
到这一般都结束了。正常使用图形操作没问题了。
但是开发人员是能进去了,但是在图形操作里面添加collection时又报错“未将对象引用设置到对象的实例."
下面的具体的是:Type:System.NullReferenceException .
网上对这个报错的解释可是玲琅满目,但是不一定都是符合自己的情况。最后觉得还是UI框架功能上的问题。
最后查到 mongoVUE 最高只能支持到 mongodb的 2.6版本,再往上就不支持了。
现在确定能支持 mongodb 3.0及以上的 客户端可视化工具是 mongochef (http://3t.io/mongochef/) 非商用的是免费的。
最后为了满足开发,降到2.6.5版本的mongodb 一切问题解决。
至于数据库开不开 auth认证,可以根据情况而言,有人说auth开启影响性能。这里不知对否。
更多推荐
所有评论(0)