无法使用php连接到mongodb数据库用户

时间:2012-09-21 08:39:09

标签: php mongodb

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

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

<?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 .....

2 个答案:

答案 0 :(得分:3)

如果你没有在构造函数中指定db,它默认使用admin数据库(如Mongo::__construct - 参考中所述)。请尝试以下方法:

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

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

答案 1 :(得分:-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