rockmongo icon indicating copy to clipboard operation
rockmongo copied to clipboard

Rock mongo not creating new database when in mongod.conf set auth true

Open vlatkoodrljin opened this issue 10 years ago • 8 comments

I install mongoDB 2.6 on Ubuntu 14.04. Everything work fine except one thing. I create one user with root privileges for my MongoDB. Then I use rockmongo config.php like this:

On my server in mongod.conf i set auth: true (removed #).

Login in rockmongo work ok, but problem is when i try create new database, Rockmongo said: "New database created." but new database not exist.

vlatkoodrljin avatar Aug 24 '14 22:08 vlatkoodrljin

I have the same problem. Did you solve it somehow?

adambalint-srg avatar Nov 05 '14 14:11 adambalint-srg

No, I use tool from: http://robomongo.org/ :D

I have the same problem. Did you solve it somehow?

— Reply to this email directly or view it on GitHub https://github.com/iwind/rockmongo/issues/89#issuecomment-61818857.

vlatkoodrljin avatar Nov 05 '14 15:11 vlatkoodrljin

try to grant custom role as described here

http://docs.mongodb.org/manual/reference/command/eval/#access-control

ambienthack avatar Aug 26 '15 16:08 ambienthack

I have some problem, and i found solution. You can replace server.php and db.php and all it be work db.php `<?php

import("classes.BaseController");

class DbController extends BaseController { /** database **/ public function doIndex() { $this->db = trim(xn("db"));

    $dbs = $this->_server->listDbs();
    $ret = array();
    foreach ($dbs["databases"] as $db) {
        if ($db["name"] == $this->db) {
            $ret = $db;
        }
    }

    //collections
    $db = $this->_mongo->selectDB($this->db);
    $collections = MDb::listCollections($db);

    $ret = array_merge($ret, $db->command(array("dbstats" => 1)));
    $ret["diskSize"] = "-";
    if (isset($ret["sizeOnDisk"])) {
        $ret["diskSize"] = r_human_bytes($ret["sizeOnDisk"]);
    }
    if(isset($ret["dataSize"])) {
        $ret["dataSize"] = r_human_bytes($ret["dataSize"]);
    }
    if(isset($ret["storageSize"])) {
        $ret["storageSize"] = r_human_bytes($ret["storageSize"]);
    }
    if(isset($ret["indexSize"])) {
        $ret["indexSize"] = r_human_bytes($ret["indexSize"]);
    }


    $this->stats = array();
    $this->stats["Size"] = $ret["diskSize"];
    $this->stats["Is Empty?"] = $ret["empty"] ? "Yes" : "No";
    if (empty($collections)) {
        $this->stats["Collections"] = count($collections) . " collections:";
        $this->stats["Collections"] .= "<br/>No collections yet";
    }
    else {
        $key = "Collections<br/>[<a href=\"" . $this->path("db.dropDbCollections", array( "db" => $this->db )) . "\" onclick=\"return window.confirm('Are you sure to drop all collections in the db?')\"><u>Drop All</u></a>]<br/>[<a href=\"" . $this->path("clearDbCollections", array( "db" => $this->db )) . "\" onclick=\"return window.confirm('Are you sure to clear all records in all collections?')\"><u>Clear All</u></a>]";
        $this->stats[$key] = count($collections) . " collections:";
        foreach ($collections as $collection) {
            $this->stats[$key] .= "<br/><a href=\""
                . $this->path("collection.index", array( "db" => $this->db, "collection" => $collection->getName())) . "\">" . $collection->getName() . "</a>";
        }
    }
    if(isset($ret["objects"])) {
        $this->stats["Objects"] = $ret["objects"];
    }
    if (isset($ret["avgObjSize"])) {
        $this->stats["Avg Object Size"] = r_human_bytes($ret["avgObjSize"]);
    }
    if(isset($ret["dataSize"])) {
        $this->stats["Data Size"] = $ret["dataSize"];
    }
    if(isset($ret["storageSize"])) {
        $this->stats["Storage Size"] = $ret["storageSize"];
    }
    if(isset($ret["numExtents"])) {
        $this->stats["Extents"] = $ret["numExtents"];
    }
    if(isset($ret["indexes"])) {
        $this->stats["Indexes"] = $ret["indexes"];
    }
    if(isset($ret["indexSize"])) {
        $this->stats["Index Size"] = r_human_bytes($ret["indexSize"]);
    }
    if (isset($ret["fileSize"])) {
        $this->stats["Total File Size"] = r_human_bytes($ret["fileSize"]);
    }
    if (isset($ret["nsSizeMB"])) {
        $this->stats["Namespace Size"] = $ret["nsSizeMB"] . "m";
    }
    if (isset($ret["dataFileVersion"])) {
        $this->stats["Data File Version"] = $this->_highlight($ret["dataFileVersion"], "json");
    }
    if (isset($ret["extentFreeList"])) {
        $this->stats["Extent Free List"] = $this->_highlight($ret["extentFreeList"], "json");
    }

    $this->display();
}

/** transfer db collections from one server to another **/
public function doDbTransfer() {
    $this->db = xn("db");

    $db = $this->_mongo->selectDB($this->db);
    $this->collections = $db->listCollections();
    $this->servers = $this->_admin->servers();

    $this->selectedCollections = array();
    if (!$this->isPost()) {
        $this->selectedCollections[] = xn("collection");
        x("copy_indexes", 1);
        $this->target_host = "";
        $this->target_sock = "";
        $this->target_port = 27017;
        $this->target_auth = 0;
        $this->target_username = "";
        $this->target_password = "";
    }
    else {
        $this->target_host = trim(xn("target_host"));
        $this->target_sock = trim(xn("target_sock"));
        $this->target_port = xi("target_port");
        $this->target_auth = xi("target_auth");
        $this->target_username = trim(xn("target_username"));
        $this->target_password = trim(xn("target_password"));

        $checkeds = xn("checked");
        if (is_array($checkeds)) {
            $this->selectedCollections = array_keys($checkeds);
        }
        if (empty($checkeds)) {
            $this->error = "Please select collections which you want to transfer.";
            $this->display();
            return;
        }
        if (empty($this->target_host) && empty($this->target_sock)) {
            $this->error = "Target host must not be empty.";
            $this->display();
            return;
        }
        $copyIndexes = xi("copy_indexes");
        /**if ($target === "") {
            $this->error = "Please enter a valid database name.";
            $this->display();
            return;
        }**/

        //start to transfer
        $targetOptions = array();
        if ($this->target_auth) {
            $targetOptions["username"] = $this->target_username;
            $targetOptions["password"] = $this->target_password;
        }
        $uri = null;
        if ($this->target_sock) {
            $uri = "mongodb://" . $this->target_sock;
        }
        else {
            $uri = "mongodb://" . $this->target_host . ":" . $this->target_port;
        }
        $targetConnection = new RMongo($uri, $targetOptions);
        $targetDb = $targetConnection->selectDB($this->db);
        if ($this->target_auth) {
            // "authenticate" can only be used between 1.0.1 - 1.2.11
            if (RMongo::compareVersion("1.0.1") >= 0 && RMongo::compareVersion("1.2.11") < 0) {
                $targetDb->authenticate($this->target_username, $this->target_password);
            }
        }
        $errors = array();
        foreach ($this->selectedCollections as $collectionName) {
            $ret = $targetDb->command(array(
                "cloneCollection" => $this->db . "." . $collectionName,
                "from" =>  $this->_server->uri(),
                "copyIndexes" => (bool)$copyIndexes
            ));
            if (!$ret["ok"]) {
                $errors[] = MMongo::readException($ret);
                break;
            }
        }
        if (!empty($errors)) {
            $this->error = implode("<br/>", $errors);
            $this->display();
            return;
        }

        $this->message = "All data were transfered to '{$this->target_host}' successfully.";
    }

    $this->display();
}

/** export db **/
public function doDbExport() {
    $this->db = xn("db");

    $db = $this->_mongo->selectDB($this->db);
    $this->collections = MDb::listCollections($db);
    $this->selectedCollections = array();
    if (!$this->isPost()) {
        $this->selectedCollections[] = xn("collection");
    }
    else {
        $checkeds = xn("checked");
        $canDownload = xn("can_download");
        if (is_array($checkeds)) {
            $this->selectedCollections = array_keys($checkeds);
        }

        sort($this->selectedCollections);

        import("classes.VarExportor");
        $this->contents =  "";
        $this->countRows = 0;

        //indexes
        foreach ($this->selectedCollections as $collection) {
            $collObj = $db->selectCollection($collection);
            $infos = $collObj->getIndexInfo();
            foreach ($infos as $info) {
                $options = array();
                if (isset($info["unique"])) {
                    $options["unique"] = $info["unique"];
                }
                $exportor = new VarExportor($db, $info["key"]);
                $exportor2 = new VarExportor($db, $options);
                $this->contents .= "\n/** {$collection} indexes **/\ndb.getCollection(\"" . addslashes($collection) . "\").ensureIndex(" . $exportor->export(MONGO_EXPORT_JSON) . "," . $exportor2->export(MONGO_EXPORT_JSON) . ");\n";
            }
        }

        //data
        foreach ($this->selectedCollections as $collection) {
            $cursor = $db->selectCollection($collection)->find();
            $this->contents .= "\n/** " . $collection  . " records **/\n";
            foreach ($cursor as $one) {
                $this->countRows ++;
                $exportor = new VarExportor($db, $one);
                $this->contents .= "db.getCollection(\"" . addslashes($collection) . "\").insert(" . $exportor->export(MONGO_EXPORT_JSON) . ");\n";
                unset($exportor);
            }
            unset($cursor);
        }
        if (x("can_download")) {
            $prefix = "mongo-" . urlencode($this->db) . "-" . date("Ymd-His");

            //gzip
            if (x("gzip")) {
                ob_end_clean();
                header("Content-type: application/x-gzip");
                header("Content-Disposition: attachment; filename=\"{$prefix}.gz\"");
                echo gzcompress($this->contents, 9);
                exit();
            }
            else {
                ob_end_clean();
                header("Content-type: application/octet-stream");
                header("Content-Disposition: attachment; filename=\"{$prefix}.js\"");
                echo $this->contents;
                exit();
            }
        }
    }

    $this->display();
}

/** import db **/
public function doDbImport() {
    $this->db = xn("db");

    if ($this->isPost()) {
        $format = x("format");
        if (!empty($_FILES["json"]["tmp_name"])) {
            $tmp = $_FILES["json"]["tmp_name"];

            //read file by it's format
            $body = "";
            if (preg_match("/\\.gz$/", $_FILES["json"]["name"])) {
                $body = gzuncompress(file_get_contents($tmp));
            }
            else {
                $body = file_get_contents($tmp);
            }

            //check format

            $ret = array("ok" => 0);
            if ($format == "js") {
                $ret = $this->_mongo->selectDB($this->db)->execute('function (){ ' . $body . ' }');

                if (!$ret["ok"]) {
                    $this->error = $ret["errmsg"];
                }
                else {
                    $this->message = "All data import successfully.";
                }
            }
            else {
                $collection = trim(xn("collection"));
                if ($collection === "") {
                    $this->error2 = "Please enter the collection name";
                }
                else {
                    $lines = explode("\n", $body);
                    foreach ($lines as $line) {
                        $line = trim($line);
                        if ($line) {
                            $ret = $this->_mongo->selectDB($this->db)->execute('function (c, o){ o=eval("(" + o + ")"); db.getCollection(c).insert(o); }', array( $collection, $line ));
                        }
                    }


                    if (!$ret["ok"]) {
                        $this->error2 = $ret["errmsg"];
                    }
                    else {
                        $this->message2 = "All data import successfully.";
                    }
                }
            }

        }
        else {
            if ($format == "js") {
                $this->error = "Either no file input or file is too large to upload.";
            }
            else {
                $this->error2 = "Either no file input or file is too large to upload.";
            }
        }
    }

    $this->display();
}

/** db profiling **/
public function doProfile() {
    $this->db = xn("db");

    import("lib.mongo.RQuery");
    import("lib.page.RPageStyle1");
    $query = new RQuery($this->_mongo, $this->db, "system.profile");
    $page = new RPageStyle1();
    $page->setTotal($query->count());
    $page->setSize(10);
    $page->setAutoQuery();
    $this->page = $page;

    $this->rows = $query
        ->offset($page->offset())
        ->limit($page->size())
        ->desc("ts")
        ->findAll();
    foreach ($this->rows as $index => $row) {
        $this->rows[$index]["text"] = $this->_highlight($row, "json");
    }

    $this->display();
}

/** change db profiling level **/
public function doProfileLevel() {
    $this->db = xn("db");

    $db = $this->_mongo->selectDB($this->db);
    $query1 = $db->execute("function (){ return db.getProfilingLevel(); }");
    $this->level = $query1["retval"];
    if (x("go") == "save_level") {
        $level = xi("level");
        $slowms = xi("slowms");
        $db->execute("function(level,slowms) { db.setProfilingLevel(level,slowms); }", array($level, $slowms));
        $this->level = $level;
    }
    else {
        x("slowms", 50);
    }
    $this->display();
}

/** clear profiling data **/
public function doClearProfile() {
    $this->db = xn("db");
    $db = $this->_mongo->selectDB($this->db);

    $query1 = $db->execute("function (){ return db.getProfilingLevel(); }");
    $oldLevel = $query1["retval"];
    $db->execute("function(level) { db.setProfilingLevel(level); }", array(0));
    $ret = $db->selectCollection("system.profile")->drop();
    $db->execute("function(level) { db.setProfilingLevel(level); }", array($oldLevel));

    $this->redirect("db.profile", array(
        "db" => $this->db
    ));
}

/** authentication **/
public function doAuth() {
    $this->db = xn("db");
    $db = $this->_mongo->selectDB($this->db);

    //users
    $collection = $db->selectCollection("system.users");
    $cursor = $collection->find();
    $this->users= array();
    while($cursor->hasNext()) {
        $this->users[] = $cursor->getNext();
    }

    $this->display();
}

/** delete user **/
public function doDeleteUser() {
    $this->db = xn("db");
    $db = $this->_mongo->selectDB($this->db);

    $db->execute("function (username){ db.removeUser(username); }", array(xn("user")));
    $this->redirect("db.auth", array(
        "db" => $this->db
    ));
}

/** add user **/
public function doAddUser() {
    $this->db = xn("db");

    if (!$this->isPost()) {
        $this->display();
        return;
    }

    $username = trim(xn("username"));
    $password = trim(xn("password"));
    $password2 = trim(xn("password2"));
    if ($username == "") {
        $this->error = "You must supply a username for user.";
        $this->display();
        return;
    }
    if ($password == "") {
        $this->error = "You must supply a password for user.";
        $this->display();
        return;
    }
    if ($password != $password2) {
        $this->error = "Passwords you typed twice is not same.";
        $this->display();
        return;
    }
    $db = $this->_mongo->selectDB($this->db);


    $command = array(
"createUser" => $username,
"pwd"        => $password,
"roles"      => array
(
    array("role" => "readWrite", "db" => $this->db)
)
);
$db->command( $command );

    $this->redirect("auth", array(
        "db" => $this->db
    ));
}

/** create new collection **/
public function doNewCollection() {
    $this->db = xn("db");
    $this->name = trim(xn("name"));
    $this->isCapped = xi("is_capped");
    $this->size = xi("size");
    $this->max = xi("max");

    if ($this->isPost()) {
        $db = $this->_mongo->selectDB($this->db);

        MCollection::createCollection($db, $this->name, array(
            "capped" => $this->isCapped,
            "size" => $this->size,
            "max" => $this->max
        ));
        $this->message = "New collection is created. <a href=\"?action=collection.index&db={$this->db}&collection={$this->name}\">[GO &raquo;]</a>";

        //add index
        if (!$this->isCapped) {
            $db->selectCollection($this->name)->ensureIndex(array( "_id" => 1 ));
        }
    }

    $this->display();
}

/** drop all collections in a db **/
public function doDropDbCollections() {
    $this->db = xn("db");
    $db = $this->_mongo->selectDB($this->db);
    foreach ($db->listCollections() as $collection) {
        $collection->drop();
    }
    echo '<script language="javascript">

window.parent.frames["left"].location.reload(); '; $this->redirect("db.index", array( "db" => $this->db ), true); }

/** clear all records in all collections **/
public function doClearDbCollections() {
    $this->db = xn("db");
    $db = $this->_mongo->selectDB($this->db);
    foreach ($db->listCollections() as $collection) {
        $collection->remove();
    }
    echo '<script language="javascript">

window.parent.frames["left"].location.reload(); '; $this->redirect("db.index", array( "db" => $this->db ), true); }

/** repair dataase **/
public function doRepairDatabase() {
    $this->db = xn("db");

    $db = $this->_mongo->selectDB($this->db);
    $ret = $db->command(array( "repairDatabase" => 1 ));
    //$ret = $db->execute('function (){ return db.repairDatabase(); }'); //occure error in current version, we did not know why?
    $this->ret = $this->_highlight($ret, "json");
    $this->display();
}

/** drop database **/
public function doDropDatabase() {
    $this->db = xn("db");

    if (!x("confirm")) {
        $this->display();
        return;
    }

    $ret = $this->_mongo->dropDB($this->db);
    $this->ret = $this->_highlight($ret, "json");
    $this->display("dropDatabaseResult");
}

}

?>server.php<?php

import("classes.BaseController");

class ServerController extends BaseController { /** server infomation **/ public function doIndex() { $db = $this->_mongo->selectDB("admin");

    //command line
    try {
        $query = $db->command(array("getCmdLineOpts" => 1));
        if (isset($query["argv"])) {
            $this->commandLine = implode(" ", $query["argv"]);
        }
        else {
            $this->commandLine = "";
        }
    } catch (Exception $e) {
        $this->commandLine = "";
    }

    //web server
    $this->webServers = array();
    if (isset($_SERVER["SERVER_SOFTWARE"])) {
        list($webServer) = explode(" ", $_SERVER["SERVER_SOFTWARE"]);
        $this->webServers["Web server"] = $webServer;
    }
    $this->webServers["<a href=\"http://www.php.net\" target=\"_blank\">PHP version</a>"] = "PHP " . PHP_VERSION;
    $this->webServers["<a href=\"http://www.php.net/mongo\" target=\"_blank\">PHP extension</a>"] = "<a href=\"http://pecl.php.net/package/mongo\" target=\"_blank\">mongo</a>/" . RMongo::getVersion();

    $this->directives = ini_get_all("mongo");

    //build info
    $this->buildInfos = array();
    try {
        $ret = $db->command(array("buildinfo" => 1));
        if ($ret["ok"]) {
            unset($ret["ok"]);
            $this->buildInfos = $ret;
        }
    } catch (Exception $e) {

    }

    //connection
    $this->connections = array(
        "Host" => $this->_server->mongoHost(),
        "Port" => $this->_server->mongoPort(),
        "Username" => "******",
        "Password" => "******"
    );

    $this->display();
}

/** Server Status **/
public function doStatus() {
    $this->status = array();

    try {
        //status
        $db = $this->_mongo->selectDB("admin");
        $ret = $db->command(array("serverStatus" => 1));
        if ($ret["ok"]) {
            unset($ret["ok"]);
            $this->status = $ret;
            foreach ($this->status as $index => $_status) {
                $json = $this->_highlight($_status, "json");
                if ($index == "uptime") {//we convert it to days
                    if ($_status >= 86400) {
                        $json .= "s (" . ceil($_status/86400) . "days)";
                    }
                }
                $this->status[$index] =  $json;
            }
        }
    } catch (Exception $e) {

    }

    $this->display();
}

/** show databases **/
public function doDatabases() {
    $ret = $this->_server->listDbs();
    $this->dbs = $ret["databases"];
    foreach ($this->dbs as $index => $db) {
        $mongodb = $this->_mongo->selectDB($db["name"]);
        $ret = $mongodb->command(array("dbstats" => 1));
        $ret["collections"] = count(MDb::listCollections($mongodb));
        if (isset($db["sizeOnDisk"])) {
            $ret["diskSize"] = r_human_bytes($db["sizeOnDisk"]);
            $ret["dataSize"] = r_human_bytes($ret["dataSize"]);
        }
        else {
            $ret["diskSize"] = "-";
            $ret["dataSize"] = "-";
        }
        $ret["storageSize"] = r_human_bytes($ret["storageSize"]);
        $ret["indexSize"] = r_human_bytes($ret["indexSize"]);
        $this->dbs[$index] = array_merge($this->dbs[$index], $ret);

    }
    $this->dbs = rock_array_sort($this->dbs, "name");
    $this->display();
}

/** execute command **/
public function doCommand() {
    $ret = $this->_server->listDbs();
    $this->dbs = $ret["databases"];

    if (!$this->isPost()) {
        x("command", json_format("{listCommands:1}"));
        if (!x("db")) {
            x("db", "admin");
        }
    }

    if ($this->isPost()) {
        $command = xn("command");
        $format = x("format");
        if ($format == "json") {
            $command =  $this->_decodeJson($command);
        }
        else {
            $eval = new VarEval($command);
            $command = $eval->execute();
        }
        if (!is_array($command)) {
            $this->message = "You should send a valid command";
            $this->display();
            return;
        }
        $this->ret = $this->_highlight($this->_mongo->selectDB(xn("db"))->command($command), $format);
    }
    $this->display();
}

/** execute code **/
public function doExecute() {
    $ret = $this->_server->listDbs();
    $this->dbs = $ret["databases"];
    if (!$this->isPost()) {
        if (!x("db")) {
            x("db", "admin");
        }
        x("code", 'function () {

var plus = 1 + 2; return plus; }'); } if ($this->isPost()) { $code = trim(xn("code")); $arguments = xn("argument"); if (!is_array($arguments)) { $arguments = array(); } else { $this->arguments = $arguments; foreach ($arguments as $index => $argument) { $argument = trim($argument); $array = $this->_decodeJson($argument); $arguments[$index] = $array; } } $ret = $this->_mongo->selectDB(xn("db"))->execute($code, $arguments); $this->ret = $this->_highlight($ret, "json"); } $this->display(); }

/** processlist **/
public function doProcesslist() {
    $this->progs = array();

    try {
        $query = $this->_mongo->selectDB("admin")->execute('function (){
            return db.$cmd.sys.inprog.find({ $all:1 }).next();
        }');


        if ($query["ok"]) {
            $this->progs = $query["retval"]["inprog"];
        }
        foreach ($this->progs as $index => $prog) {
            foreach ($prog as $key=>$value) {
                if (is_array($value)) {
                    $this->progs[$index][$key] = $this->_highlight($value, "json");
                }
            }
        }
    } catch (Exception $e) {

    }
    $this->display();
}

/** kill one operation in processlist **/
public function doKillOp() {
    $opid = xi("opid");
    $query = $this->_mongo->selectDB("admin")->execute('function (opid){
        return db.killOp(opid);
    }', array( $opid ));
    if ($query["ok"]) {
        $this->redirect("server.processlist");
    }
    $this->ret = $this->_highlight($query, "json");
    $this->display();
}

/** create databse **/
public function doCreateDatabase() {
    if ($this->isPost()) {
        $name = trim(xn("name"));
        if (empty($name)) {
            $this->error = "Please input a valid database name.";
            $this->display();
            return;
        }
        $this->message = "New database created.";
        $this->_mongo->selectDb($name)->createCollection("tmp_col");

    }
    $this->display();
}

/** replication status **/
public function doReplication() {
    $this->status = array();

    try {
        $ret = $this->_mongo->selectDB("local")->execute('function () { return db.getReplicationInfo(); }');
        $status = isset($ret["retval"]) ? $ret["retval"] : array();
        if (isset($ret["retval"]["errmsg"])) {
            $this->status["errmsg"] = $ret["retval"]["errmsg"];
        }
        else {
            foreach ($status as $param => $value) {
                if ($param == "logSizeMB") {
                    $this->status["Configured oplog size"] = $value . "m";
                }
                else if ($param == "timeDiff") {
                    $this->status["Log length start to end"] = $value . "secs (" . $status["timeDiffHours"] . "hrs)";
                }
                else if ($param == "tFirst") {
                    $this->status["Oplog first event time"] = $value;
                }
                else if ($param == "tLast") {
                    $this->status["Oplog last event time"] = $value;
                }
                else if ($param == "now") {
                    $this->status["Now"] = $value;
                }
            }
        }
    } catch (Exception $e) {

    }

    //slaves
    $this->slaves = array();

    try {
        $query = $this->_mongo->selectDB("local")->selectCollection("slaves")->find();
        foreach ($query as $one) {
            foreach ($one as $param=>$value) {
                if ($param == "syncedTo") {
                    $one[$param] = date("Y-m-d H:i:s", $value->sec) . "." . $value->inc;
                }
            }
            $this->slaves[] = $one;
        }
    } catch (Exception $e) {

    }

    //masters
    $this->masters = array();
    try {
        $query = $this->_mongo->selectDB("local")->selectCollection("sources")->find();
        foreach ($query as $one) {
            foreach ($one as $param=>$value) {
                if ($param == "syncedTo" || $param == "localLogTs") {
                    if ($value->inc > 0) {
                        $one[$param] = date("Y-m-d H:i:s", $value->sec) . "." . $value->inc;
                    }
                }
            }
            $this->masters[] = $one;
        }
    } catch (Exception $e) {

    }

    //me
    try {
        $this->me = $this->_mongo->selectDB("local")->selectCollection("me")->findOne();
    } catch (Exception $e) {
        $this->me = array();
    }

    $this->display();
}

}

?>`

backdooooor avatar Feb 15 '16 05:02 backdooooor

I face same problem when use Bitnami MEAN stack. https://bitnami.com/stack/mean (version at current time)

donhuvy avatar Mar 09 '16 06:03 donhuvy

anyone have solution for MEAN stack?

facing problem same here

kartikrangholiya avatar May 15 '16 08:05 kartikrangholiya

I also faced same problem when used Bitnami Mean stack in google cloud, i configured mongodb.conf to bind-addr 0.0.0.0 and open firewall rule for port 27017 to only my ip. After that i used robomongo and created my new database.

rupeshp2 avatar Oct 03 '16 07:10 rupeshp2

Vote on this issue please #133

stefanocudini avatar Aug 22 '17 01:08 stefanocudini