MongoDB副本集设置报错:执行rs.add命令时提示未授权
解决MongoDB副本集添加节点时的授权错误
嘿,我碰到过一模一样的问题!你这是MongoDB副本集添加节点时踩的权限认证坑,咱一步步来解决:
先确认连接与认证状态
虽然你创建了带root角色的admin用户,但执行rs.add()这类副本集配置操作时,必须先在admin库完成认证。先切换到admin库并验证身份:use admin db.auth("user", "你的用户密码")这是因为MongoDB的权限是库级别的,
root角色的权限范围绑定在admin库上,只有在该库认证后,才能获得全局最高权限(包括操作存储副本集配置的local库)。确保在主节点执行命令
副本集的配置修改只能在主节点(PRIMARY)上操作,别跑到从节点(SECONDARY)上去操作。先确认当前节点的角色:rs.status()查看输出中的
stateStr字段,只有显示"PRIMARY"的节点才有资格执行rs.add()命令。验证用户权限是否正确
有时候可能创建用户时出现疏漏,咱再检查一遍:use admin db.getUser("user")确保返回结果的
roles数组里确实包含{"role": "root", "db": "admin"},如果没有需要重新创建该用户。带认证参数重新连接(如果上述步骤无效)
要是你之前的Mongo Shell连接没有带认证参数,直接进入后权限会不足。退出当前连接,用带认证的命令重新登录:mongo --host 你的主节点地址 --authenticationDatabase admin -u user -p 你的密码登录成功后再执行
rs.add("ec2-XX-XXX-XX-XXX.compute-1.amazonaws.com")即可。
按这个流程走,基本就能解决not authorized on local to execute command的报错了!
内容的提问来源于stack exchange,提问作者wprins
相关产品推荐
相关产品推荐

