php mongo 认证,MongoDB 认证机制升级

早上某php开发反映新搭建的 mongodb 副本集连不上,后发现是认证问题导致的。

具体的报错信息如下:

2019-07-11T10:31:38.142+0800 I ACCESS [conn1913292] authenticate db: bch_gn_xxx_com { authenticate: 1, user: "gn_bch_user", nonce: "xxx", key: "xxx" }

2019-07-11T10:31:38.143+0800 I ACCESS [conn1913292] Failed to authenticate gn_bch_user@bch_gn_xxx_com with mechanism MONGODB-CR: AuthenticationFailed: MONGODB-CR credentials missing in the user document

此环境的 mongodb 版本是 3.2 ,mongodb 3.* 有两种认证方式,MONGODB-CR(2.6默认的) 和 SCRAM 。默认使用 SCRAM  ,但开发使用的驱动只支持 MONGODB-CR ,从而导致因认证机制不匹配而拒绝连接。

从 4.0 开始,MongoDB 已经停止对 MONGODB-CR 的支持。所以在升级到4.0之前必须先升级认证机制。

升级也很简单,只有一行命令 (百度给的强制降级到 MONGODB-CR,重新创建账户的方案真是误人子弟)

db.adminCommand({authSchemaUpgrade: 1});

可以在 3.0 到 3.6 任一版本执行。

如果是在分片上执行,需要通过 mongos 执行。默认会下发到所有节点,如果你不想这样,可以先在 mongos 执行

db.adminCommand(

{authSchemaUpgrade: 1, upgradeShards: false }

);

然后在每个分片的primary节点重复执行

db.adminCommand({authSchemaUpgrade: 1});

关于php驱动的升级可以参考官网的介绍,如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值