4

我的服务器上有一个正在运行的 mongod auth=true

如果我登录到我的管理员用户(来自管理员数据库),则获取数据没有问题。

<?php
$connection = new Mongo("mongodb://admin:adminpass@127.0.0.1");

$db = $connection->selectDB( "mydb" );
$collection = $db->selectCollection( "user" );
var_dump($collection->findOne());
?>

但是如果我将第一行替换为

$connection = new Mongo("mongodb://mydbadmin:dbadminpass@127.0.0.1:27017");

它无法连接并出现如下错误:

Fatal error: Uncaught exception 'MongoConnectionException' with message 'Couldn't authenticate with database admin: username [mydbadmin]' in .....

所以问题是new Mongo()尝试将我的用户连接到管理数据库而不是“mydb”数据库。如何选择要连接的数据库?

编辑 :

根据http://php.net/manual/fr/mongo.construct.php
我试过这个

$login = array("username" => "mydbadmin",
               "password" => "dbadminpass",
               "db" => "mydb",
               "connect" => true
);

$connection = new Mongo("mongodb://localhost", $login);

Couldn't authenticate with database mydb: username [mydbadmin]' in .....
4

2 回答 2

3

好吧,如果您没有在构造函数中指定 db,它admin默认使用数据库(如Mongo::__construct-reference 中所述)。尝试以下操作:

$connection = new Mongo("mongodb://admin:adminpass@127.0.0.1/mydb");

注意/mydb主机部分之后,它让 PHP-api 连接到所需的数据库。

于 2012-09-21T09:54:01.440 回答
-1

检查你的 php 驱动程序版本和 mongod 版本,两个版本必须兼容。例如:对于我的 ..我在 mlab.com 中使用 php 5.3(wamp) 和 mongod 3.0 ..我的 dll 版本是 php_mongo-1.6.6-5.3- ts-vc9-x86

对我有好处

有关 mongo 驱动程序的详细信息,请参阅此站点

请参阅以下站点 https://docs.mongodb.com/ecosystem/drivers/php/

请参阅此站点以下载 mongod 驱动程序 https://pecl.php.net/package/mongo/1.6.6/windows

谢谢...sureshapn.m@gmail.com

于 2016-07-16T12:02:15.097 回答