2012-09-21 28 views
4

我在我的服務器上有一個正在運行的MongoDB auth=true不能用php連接到一個mongodb數據庫用戶

如果我登錄到我的管理員用戶(從管理數據庫),沒有問題來獲取數據。

<?php 
$connection = new Mongo("mongodb://admin:[email protected]"); 

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

,但如果我通過

$connection = new Mongo("mongodb://mydbadmin:[email protected]: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 ..... 

回答

3

那麼,如果你不指定在構造一個數據庫,它使用數據庫默認爲admin(如中所述-參考)。請嘗試以下操作:

$connection = new Mongo("mongodb://admin:[email protected]/mydb"); 

通知主機部分,它可以讓PHP-API連接到所需的數據庫後/mydb

+0

好笑,我做編輯,當你寫你的答案。關於__construct文檔。 – Martin

+0

好的,你的答案完美無缺。我只是想知道爲什麼我的編輯不起作用。任何想法 ? – Martin

+0

@Martin我會做出一個hap的冒險猜測,並說你試圖用db管理員憑證直接連接到mydb,而不是那些與db相關的憑證。這裏是一個例子:http://www.mongodb.org/display/DOCS/Security+and+Authentication#SecurityandAuthentication-Logginginasanadminuser我相信你在那裏嘗試過後者。 – Sammaye

相關問題