gpt4 book ai didi

php - MongoDB PHP 驱动程序无法连接和验证

转载 作者:可可西里 更新时间:2023-11-01 10:41:49 25 4
gpt4 key购买 nike

我第一次为 MongoDB 设置了身份验证。我有两个用户:“admin”(在“admin”数据库中设置为 root)和在“testDatabase”中设置为“dbAdmin”的“testUser”。

当我使用 mongo shell 使用以下命令登录时,一切正常:

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 Fatal error: Uncaught exception 'MongoConnectionException' with message 'Failed to connect to: 1.1.1.1:27017: Authentication failed on database 'testDatabase' with username 'testUser': auth failed' in /var/www/html/wip/include/mongoConnect.php:17 Stack trace: 0 /var/www/html/wip/include/mongoConnect.php(17): MongoClient->__construct('mongodb://1.1...', Array) 1 /var/www/html/wip/include/mongoConnect.php(27): DBConnection->__construct() 2 /var/www/html/wip/migration/migrate.php(85): DBConnection::instantiate() 3 {main} thrown in /var/www/html/wip/include/mongoConnect.php on line 17

两个用户的凭据都在 SCRAM-SHA-1 中。知道是什么导致了这个连接问题吗?

最佳答案

您可以尝试改变登录方式

$m = new MongoClient("mongodb://${username}:${password}@localhost");

看这里:
http://php.net/manual/en/mongo.connecting.auth.php

关于php - MongoDB PHP 驱动程序无法连接和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41428383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com