MongoDB 3.6管理员用户创建及登录失败问题求助
解决MongoDB 3.6管理员用户创建后登录失败的问题
我帮你梳理一套靠谱的操作流程,应该能解决你遇到的创建用户成功但登录失败的问题,步骤很清晰,跟着做就行:
第一步:确保MongoDB处于无认证状态启动
创建管理员用户必须在MongoDB没开启身份验证的环境下操作,不然连创建的权限都没有:
- 先停掉MongoDB服务:Linux系统可以用
systemctl stop mongod,Windows直接关掉对应服务进程即可 - 打开
mongod.conf配置文件,找到security区块,如果里面有authorization: enabled这一行,先把它注释掉(加个#)或者删掉 - 重启MongoDB服务:
systemctl start mongod
第二步:正确创建管理员用户
现在登录MongoDB Shell,按下面的步骤创建用户:
# 直接启动MongoDB Shell mongo # 切换到admin数据库(关键!管理员用户必须在这个库下创建) use admin # 创建拥有最高权限的root用户,把<你的用户名>和<你的密码>换成你想设的内容 db.createUser( { user: "<你的用户名>", pwd: "<你的密码>", roles: [ { role: "root", db: "admin" } ] } )
执行完如果看到Successfully added user的提示,就说明用户创建成功了。
第三步:开启身份验证并重启服务
现在要让MongoDB启用用户认证:
- 再次打开
mongod.conf,在security区块里添加(或者取消注释)这两行:
security: authorization: enabled
- 重启MongoDB服务让配置生效:
systemctl restart mongod
第四步:用管理员用户登录验证
现在有两种正确的登录方式,选一种就行:
方式一:登录时直接指定账号密码和认证数据库
mongo -u "<你的用户名>" -p "<你的密码>" --authenticationDatabase "admin"
方式二:先进入Shell再认证
# 先进入MongoDB Shell mongo # 切换到admin数据库 use admin # 执行认证,返回1就是成功,0是失败 db.auth("<你的用户名>", "<你的密码>")
几个容易踩坑的点要注意
- 一定要在admin数据库下创建管理员用户,MongoDB的用户是和数据库绑定的,root角色的用户只能在admin库生效
- 登录时必须指定
--authenticationDatabase "admin",不然MongoDB会默认去当前连接的数据库(比如test)找用户,肯定找不到 - 如果密码里有特殊字符(比如
!@#$),登录时一定要用引号把密码包起来,避免被Shell解析错误
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

