使用rs.initiate初始化创建(有权限控制的)副本集报not authorized on admin to execute command解决方案

报错具体描述
{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { replSetInitiate: { _id: \"xnRs2\", members: [ { _id: 0.0, host: \"10.62.124.43:27018\", priority: 1.0 } ] } }",
        "code" : 13,
        "codeName" : "Unauthorized"
}

发现规律
以创建一个configsvr副本集为例进行说明
rs.initiate( {
   _id: "xnConfReplSet",
   configsvr: true,
   version: 1,
   members: [
      { _id: 0, host: "10.62.124.43:27019" },
      { _id: 1, host: "10.62.124.44:27019" },
      { _id: 2, host: "10.62.124.60:27019" }
   ]
} )

在如上3台服务器中启动mongod实例时,如果启动配置中未做 bindIp 配置,则初始化创建副本集时不会出现以上错误,鉴于此,解决办法如下:

在如上3台服务器中启动mongod实例时,其中一台服务器(比如10.62.124.43)上启动mongod实例时,其启动配置文件中不做 bindIp 配置,另外2台服务器中mongod实例做 bindIp 配置,然后在10.62.124.43的物理机上用如下命令从一个mongo shell连接到mongod实例
mongo localhost:27019
连接完成后,使用如下命令初始化创建副本集
rs.initiate( {
   _id: "xnConfReplSet",
   configsvr: true,
   version: 1,
   members: [
      { _id: 0, host: "10.62.124.43:27019" },
      { _id: 1, host: "10.62.124.44:27019" },
      { _id: 2, host: "10.62.124.60:27019" }
   ]
} )
此时会看到返回初始化创建成功
退出mongo连接,将 bindIp 配置添加进服务器10.62.124.43上mongod实例对应的配置文件中,然后重启该mongod实例即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值