本文共 1323 字,大约阅读时间需要 4 分钟。
由于MongoDB迁移导致PHP客户端连接数据库异常,排查发现MongoDB3.0版本的鉴权认证机制采用了SCRAM-SHA-1协议,程序驱动出现异常,需要对鉴权机制进行降级,改用MONGODB-CR进行认证。
在无鉴权状态下登录,执行以下操作:
编辑配置文件,注释掉相关鉴权配置:
# security:# keyFile: /data1/ceshi27020_mongo/etc/keyfile# authorization: enabled
执行sudo systemctl restart mongodb命令重启MongoDB服务。
在主节点运行以下命令:
db.system.users.find()db.system.version.findOne()var schema = db.system.version.findOne({"_id" : "authSchema"})schema.currentVersion = 3db.system.version.save(schema) 删除现有用户并创建新用户:
db.dropUser('test_rw')db.createUser({ "user": "test_rw", "pwd": "iwoCsl173", "roles": [{ "role": "readWrite", "db": "lsession" }]}) 编辑配置文件,启用鉴权:
# security:# keyFile: /data1/ceshi27020_mongo/etc/keyfile# authorization: enabled
'admin', 'username' => 'dba', 'password' => 'xxxxxxxx', 'replicaSet' => 'test3', 'readPreference' => MongoClient::RP_SECONDARY_PREFERRED, '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);}