我的服务器上有一个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 .....
答案 0 :(得分:3)
如果你没有在构造函数中指定db,它默认使用admin
数据库(如Mongo::__construct
- 参考中所述)。请尝试以下方法:
$connection = new Mongo("mongodb://admin:adminpass@127.0.0.1/mydb");
注意主机部分之后的/mydb
,它允许PHP-api连接到所需的数据库。
答案 1 :(得分:-1)
对我有用
请参阅此网站以获取mongo驱动程序详细信息
参考以下网站 https://docs.mongodb.com/ecosystem/drivers/php/
请参阅此网站以下载mongod驱动程序 https://pecl.php.net/package/mongo/1.6.6/windows
谢谢...... sureshapn.m@gmail.com