mongodb管理工具 rockmongo使用时出现的问题
来源:互联网 发布:c51单片机数字时钟 编辑:程序博客网 时间:2024/06/05 20:54
mongodb管理工具 rockmongo使用时出现的问题
1、一般来说,使用mongodb都会设个用户名和密码,这就要求在使用的时候需要验证。所以在config.php下的这两个参数,第一个参数就需要设置为true,开启登录验证,用户名和密码根据mongodb所设的。
$MONGO["servers"][$i]["mongo_auth"] = true;
2、如果将以下两个参数都设置为false,可以根据所输帐号登录。当然,这是在初始安装mongodb,还未设置用户名和密码的情况下可用。
$MONGO["servers"][$i]["mongo_auth"] = true;//enable mongo authentication?
$MONGO["servers"][$i]["control_auth"] = true;//enable control users, works only if mongo_auth=false
3、如果设置了用户名和密码。那么,登录时就需要验证,而很多情况下,会发现,验证不通过。
报的信息如下:
MongoDB authenticate failed. Please check your username and password from your mongo administrator.
究其原因,如下:
mongodb的PHP扩展版本分为PHP vc6版和VC9版,我到官网下到的VC6版的,DLL文件最新的是1.2版本的,而VC9的 1.4.5。而大于1.3版本的DLL文件支持一个叫MongoClient的类,而这个类的前身版本是Mongo。在Mongo下有些方法的使用被受到了限制,比如
MongoDB::execute,MongoDB::authenticate,MongoDB::command
这些方法,在很多情况下执行脚本的时候,被要求做登录验证,而直接使用
$db->authenticate ($username,$password);
等往往会出现验证失败
因为这里要求,开始的时候不要设置链接,使用如下:
//$dsn="localhost:27017"; //如果加了这句在下面的new Mongo()里同样会验证不通过,这样就发现在,只能在本机使用
$m = new Mongo();
$db = new MongoDB($m, 'memo');
$res = $db->authenticate("root", "123456");
4、rockmongo修改如下:
config.php
$MONGO["servers"][$i]["mongo_auth"] = true;//enable mongo authentication?$MONGO["servers"][$i]["control_auth"] = true;//enable control users, works only if mongo_auth=false
MDb.php
static function listCollections(MongoDB $db) {$server = MServer::currentServer();$names = array();try {//$names = self::exec($db, 'function (){ return db.getCollectionNames(); }');//fzy.modify $names=$db->listCollections(); return $names;} catch(Exception $e) {}
RMongo.php
public function __construct($server, array $options = array()) {if (class_exists("MongoClient")) {$this->_mongo = new MongoClient($server, $options);}else {//$this->_mongo = new Mongo($server, $options); //版本初始代码 /*==================修改为以下代码=====================*/ $dns = "mongodb://".$options["username"].":".$options['password']."@".$server."/".$options["db"]; $this->_mongo = new Mongo($dns);}}
MServer.php
auth方法下
if ($this->_mongoAuth) {// "authenticate" can only be used between 1.0.1 - 1.2.11if (RMongo::compareVersion("1.0.1") >= 0 && RMongo::compareVersion("1.2.11") < 0) {$dbs = $db;if (!is_array($dbs)) {$dbs = preg_split("/\\s*,\\s*/", $dbs);}foreach ($dbs as $db) {//$ret = $this->_mongo->selectDb($db)->authenticate($username, $password); //修改前代码 //-----------------------修改后代码------------------------------------ $salted = "${username}:mongo:${password}"; $hash = md5($salted); $nonce = $this->_mongo->selectDb($db)->command(array("getnonce" => 1)); $saltedHash = md5($nonce["nonce"]."${username}${hash}"); $ret = $this->_mongo->selectDb($db)->command(array("authenticate" => 1, "user" => $username, "nonce" => $nonce["nonce"], "key" => $saltedHash )); //-----------------------------------------------------------if (!$ret["ok"]) {return false;}}
经过上面的修改,管理帐号和普通帐号应该可以正常登录了。不过,出现了一个问题,还没排查。
普通帐号登录后,使用查询功能,会现错,原因可能是不能正确解析或执行JSON格式的脚本(如前面所说),而数组查询是可用的。当然,所有点击性操作是正常的。
管理帐号登录后,操作上没遇到什么问题。
- mongodb管理工具 rockmongo使用时出现的问题
- mongodb管理工具 rockmongo使用时出现的问题
- MongoDB的图形化管理工具 rockmongo 介绍
- MongoDB数据库管理工具RockMongo
- mongodb管理工具rockmongo
- 使用RockMongo管理MongoDB
- DedeAmpz + RockMongo +Mongodb 使用
- MongoDB的网页客户端RockMongo
- Rockmongo管理工具的安装与配置
- ubuntu mongodb php apache rockmongo 的搭建
- rockmongo管理mongodb的一些简单操作
- RockMongo登录mongodb失败的处理办法
- MongoDB的界面操作工具之rockmongo
- mogodb管理工具rockmongo
- 用RockMongo远程管理mongodb
- MongoDB安装时出现的问题
- 配置MongoDB时出现的问题
- MongoDb 界面管理工具Rock Mongo windows下使用问题
- php curl详解用法[真的详解]
- Linux 进程间通信 (IPC) //共享内存
- 终端播放器moc配置解决乱码问题
- java 匿名内部类
- PowerDesigner连接oracle、PDMReader导出数据库字典
- mongodb管理工具 rockmongo使用时出现的问题
- office插件开发shapes.addpicture插入图片保存原始大小
- Linux 进程间通信 (IPC) // 消息队列
- 关于java里面Collection包括List,Map等初始化内部匿名类和泛型的一个例子
- 网络基础知识梳理
- 黎万强:面对互联网焦虑,惟“爆扁爽”者生存!
- good web
- 九度1019解题报告
- ora-02049解决一例 数据库死锁问题