MongoDB PHP驱动程序无法连接和验证
我第一次为MongoDB设置了身份验证。我有两个用户:“admin”(在“admin”数据库中设置为root)和“testUser”(在“testDatabase”中设置为“dbAdmin”) 当我使用mongo shell使用以下命令登录时,一切正常:MongoDB PHP驱动程序无法连接和验证,php,mongodb,Php,Mongodb,我第一次为MongoDB设置了身份验证。我有两个用户:“admin”(在“admin”数据库中设置为root)和“testUser”(在“testDatabase”中设置为“dbAdmin”) 当我使用mongo shell使用以下命令登录时,一切正常: mongo -u testUser -p abcd1234 --authenticationDatabase testDatabase 在PHP方面,我有以下代码: <?php class DBConnection { cons
mongo -u testUser -p abcd1234 --authenticationDatabase testDatabase
在PHP方面,我有以下代码:
<?php
class DBConnection {
const HOST = '1.1.1.1';
const PORT = 27017;
const DBNAME = 'testDatabase';
const USERNAME = 'testUser';
const PASSWORD = 'abcd1234';
private static $instance;
public $connection;
public $database;
private function __construct() {
if (!extension_loaded('mongo')) die("MongoDB is not installed!");
try {
$this->connection = new MongoClient('mongodb://'.self::HOST.':'.self::PORT.'/'.self::DBNAME, array('username' => self::USERNAME, 'password' => self::PASSWORD));
$this->database = $this->connection->selectDB(self::DBNAME);
} catch (MongoConnectionException $e) {
throw $e;
}
}
static public function instantiate() {
if (!isset(self::$instance)) {
$class = __CLASS__;
self:: $instance = new $class;
}
return self::$instance;
}
public function getCollection($name) {
return $this->database->selectCollection($name);
}
public function execute($code) {
return $this->database->execute($code);
}
}
?>
当然,主机(以及数据库名、用户名和密码)会被混淆。我已经多次确认凭证中没有输入错误。我还验证了我可以从远程shell连接到数据库,类似于此脚本的连接方式
尽管如此,我还是经常会遇到这样的错误:
PHP致命错误:未捕获的异常“MongoConnectionException”与
消息“无法连接到:1.1.1.1:27017:身份验证”
对用户名为“testUser”的数据库“testDatabase”失败:中的身份验证失败
/var/www/html/wip/include/mongoConnect.php:17堆栈跟踪:
0/var/www/html/wip/include/mongoConnect.php(17):MongoClient->mongodb://1.1...,数组)
1/var/www/html/wip/include/mongoConnect.php(27):DBConnection->\uu construct()
2/var/www/html/wip/migration/migrate.php(85):DBConnection::instantiate()
3{main}在第17行的/var/www/html/wip/include/mongoConnect.php中抛出
两个用户的凭据都在SCRAM-SHA-1中。
知道是什么导致了这个连接问题吗 您可以尝试更改登录方式 $m=新的MongoClient(“mongodb://${username}:${password}@localhost”) 看看这里:
如我所述,出于安全目的,我删除了真实的主机IP地址。脚本中的实际主机IP指向实际IP地址