Php 无法验证mongoDB
从mongo客户端看来,我可以进行身份验证:Php 无法验证mongoDB,php,mongodb,codeigniter,Php,Mongodb,Codeigniter,从mongo客户端看来,我可以进行身份验证: > use admin switched to db admin > db.auth('admin','SECRETPASSWORD'); 1 > 但当我试图在codeigniter中的配置文件中连接此代码时 $config['mongo_server'] = null; $config['mongo_dbname'] = 'admin'; $config['mongo_db']['active'] = 'default'; $
> use admin
switched to db admin
> db.auth('admin','SECRETPASSWORD');
1
>
但当我试图在codeigniter中的配置文件中连接此代码时
$config['mongo_server'] = null;
$config['mongo_dbname'] = 'admin';
$config['mongo_db']['active'] = 'default';
$config['mongo_db']['default']['no_auth'] = FALSE;
$config['mongo_db']['default']['hostname'] = 'localhost';
$config['mongo_db']['default']['port'] = '27017';
$config['mongo_db']['default']['username'] = 'admin';
$config['mongo_db']['default']['password'] = 'SECRETPASSWORD';
$config['mongo_db']['default']['database'] = 'mydb';
$config['mongo_db']['default']['db_debug'] = TRUE;
$config['mongo_db']['default']['return_as'] = 'array';
$config['mongo_db']['default']['write_concerns'] = (int)1;
$config['mongo_db']['default']['journal'] = TRUE;
$config['mongo_db']['default']['read_preference'] = NULL;
$config['mongo_db']['default']['read_preference_tags'] = NULL;
$config['mongo_db']['default']['no_auth'] = FALSE;
$config['mongo_db']['test']['hostname'] = 'localhost';
$config['mongo_db']['test']['port'] = '27017';
$config['mongo_db']['test']['username'] = '';
$config['mongo_db']['test']['password'] = '';
$config['mongo_db']['test']['database'] = '';
$config['mongo_db']['test']['db_debug'] = TRUE;
$config['mongo_db']['test']['return_as'] = 'array';
$config['mongo_db']['test']['write_concerns'] = (int)1;
$config['mongo_db']['test']['journal'] = TRUE;
$config['mongo_db']['test']['read_preference'] = NULL;
$config['mongo_db']['test']['read_preference_tags'] = NULL;
我得到了这个错误
Unable to connect to MongoDB: Failed to connect to: localhost:27017: Authentication failed on database 'mydb' with username 'admin': auth failed
我使用一个简单的库
在config.php中创建mongo.php
$config['mongo_server'] = 'localhost';
$config['mongo_dbname'] = 'yourdbname';
以及库中的Mongo.php
<?php
class CI_Mongo extends Mongo
{
var $db;
function CI_Mongo()
{
// Fetch CodeIgniter instance
$ci = get_instance();
// Load Mongo configuration file
$ci->load->config('mongo');
// Fetch Mongo server and database configuration
$server = $ci->config->item('mongo_server');
$dbname = $ci->config->item('mongo_dbname');
// Initialise Mongo
if ($server)
{
parent::__construct($server);
}
else
{
parent::__construct();
}
$this->db = $this->$dbname;
}
}
这将更改此变量的值: $config['mongo\u db']['default']['no\u auth']=FALSE 致:
$config['mongo\u db']['default']['no\u auth']=TRUE 不,它不工作,我已经更新了我的问题在MongoDB中,用户连接到数据库。显然,您的管理员用户位于名为admin的数据库中。因此,您需要使用与.Check等效的适当配置选项对该数据库进行顶级身份验证。这可能是你问题的解决办法
function index(){
$posts = $this->mongo->yourdbname->yourcollection->find();
foreach($posts as $id => $b){
echo $b['somefieldontable'];
}
}