MongoDB鉴权降级

背景:业务反馈由于MongoDB迁移导致PHP客户端连接DB异常,排查发现MongoDB3.0版本的鉴权认证机制是SCRAM-SHA-1,程序驱动异常,需降级为鉴权认证机制:MONGODB-CR
 
鉴权降级操作如下(在无鉴权地情况下登陆):
1、配置文件注释鉴权
security:
   keyFile: /data1/ceshi27020_mongo/etc/keyfile
   authorization: enabled
2、重启mongo
3、在主上执行如下命令:
db.system.users.find();
db.system.version.findOne();
var schema = db.system.version.findOne({"_id" : "authSchema"}) 
schema.currentVersion = 3 
db.system.version.save(schema) 
重建用户:
db.dropUser('test_rw');
db.createUser( { "user" : "test_rw",
"pwd": "iwoCsl173",
"roles" : [{ role: "readWrite", db: "lsession" }] });
4、开启鉴权,重启MongoDB
 
3.0版本的鉴权认证机制:SCRAM-SHA-1
降级之后的鉴权认证机制:MONGODB-CR
 
PHP连接MongoDB代码示例:
root@xxx-xxxx:/# cat mongo.php 
<?php
$server = 'mongodb://10.x.x.x:27030';
$options = array(
                'db'=>'admin',//',
                'username' => 'dba',//',
                'password' => 'xxxxxxxx',
                'replicaSet' => 'test3',
                'readPreference' => MongoClient::RP_SECONDARY_PREFERRED,
                // 'readPreference' => MongoClient::RP_PRIMARY,
                'connectTimeoutMS'=>5000,
                );
$mongo = new MongoClient($server, $options);
$db = $mongo->selectDB('zyq');
$coll = $db->selectCollection('test10');
$result = $coll->find(array("userid"=>30748));
while($doc = $result->getNext()){
        var_dump($doc);
}
执行OK!

猜你喜欢

转载自www.cnblogs.com/DBA-3306/p/11097245.html