MongoClient,用密码连接'@'

时间:2014-01-13 15:17:30

标签: mongodb-php

我一直在尝试使用MongoDb,当我运行脚本进行连接时,它不能,因为密码使用@符号。

连接到MongoDb

mongodb://username:password@localhost

但由于我连接MongoDb的密码使用@符号,因此@符号无法连接。

例如;

new MongoClient("mongodb://mongo:p@assword@localhost);

将抛出以下错误;

PHP Fatal error: Uncaught exception 'MongoConnectionException' with message 'Failed to connect to: assword!@localhost:27017: Couldn't get host info for assword!@localhost'

正如您所看到的,它认为密码中的第一个@是密码和主机的分隔符。

有没有办法连接,并在使用MongoClient时允许密码中的@符号?

2 个答案:

答案 0 :(得分:6)

http://uk3.php.net/manual/en/mongoclient.construct.php您可以将用户名和密码作为选项数组传递

new MongoClient("mongodb://localhost:27017", array("username" => "joe", "password" => "test"));

答案 1 :(得分:0)

您可以尝试使用此代码。只需按动态值传递输入。

try {
            $m = new MongoClient("mongodb://HOST:" . MNG_PORT, array(
                "username" => MNG_USER,
                "password" => MNG_PWD
            )); // connect local Mongo
            $db = $m->selectDB("DBNAME"); // select DB
            $collection = $db->collections; // connect to collection
        } catch ( MongoConnectionException $e ) {
            echo 'Couldn\'t connect to mongodb, is the "mongo" process running?';
            exit();
        }