#1 楼
如果您已锁定自己,则需要执行以下操作:停止MongoDB实例
从MongoDB配置中删除--auth和/或--keyfile选项禁用身份验证
在不进行身份验证的情况下启动实例
根据需要编辑用户
在启用身份验证的情况下重新启动实例
#2 楼
创建用户而不先添加超级用户时,我遇到了类似的问题。以下步骤有助于解决该问题:使用
sudo
(sudo vi mongodb.conf
)打开MongoDB配置文件。该文件位于
/etc/
文件夹中。 评论
"auth = true"
。停止MongoDB服务(
sudo service mongod stop
)启动MongoDB服务(
sudo service mongod start
)然后使用以下命令创建“ root”超级用户:
use admin
db.createUser({user:"admin",pwd:"password",roles:[{role:"root",db:"admin"}]});
供参考https://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles
转到返回并取消注释。停止并启动/重新启动mongodb服务。
评论
我感激不尽。当我将项目上传到开发服务器时,我一直试图找出答案。非常感谢! :)
– Woppi
18年2月8日在7:39
同上。服务器错误消息对此毫无帮助。谢谢!
–汤姆
18-3-29在7:09
我正在使用AWS EC2 linux实例,并且在/ etc /下有mongod.conf而不是mongodb.conf。我也没有在conf文件中找到auth = true条目。请说清楚
– vikramvi
19/12/9在10:52
#3 楼
如果您将副本集与keyfile
一起使用使用内部
身份验证
密钥文件的副本集成员之间的安全性用于复制中的身份验证。
security:
keyFile: <path-to-keyfile>
replication:
replSetName: <replicaSetName>
您可以使用此命令以管理员身份登录mongod:
mongo -u __system -p "$(tr -d '1-50' < path-to-keyfile)" --authenticationDatabase local
之后,您便可以创建或修改管理员用户。
内部角色
__system
MongoDB将该角色分配给代表集群成员的用户对象,例如作为副本集成员和mongos实例。 角色授予其所有者对
数据库中的任何对象执行任何操作。
不要将此角色分配给代表应用程序或
人工管理员的用户对象,除特殊情况外。
评论
您在哪里找到此信息?
–八面体
19 Mar 24 '19在10:53
@octohedron该差异文件中的最后一个文件显示了它:github.com/mongodb/mongo/commit/…另一个来源是percona.com/blog/2019/07/12/mongodb-security-vs-five-bad-guys
– Gert van den Berg
20-10-9在20:35
#4 楼
检查此问题的答案,可能会有所帮助https://stackoverflow.com/questions/20117104/mongodb-root-user
基本上可以访问服务器上,您也许可以访问
Admin
数据库。 此页面中还有更多内容http://docs.mongodb.org/v2.4/reference/user-privileges/
请注意2.6版更改了其完全工作方式。对于2.6,您需要花更多时间在http://docs.mongodb.org/manual/security/
评论
如文章中所述,这是我唯一能找到的信息。我没有这样做的权限
–托尼
2014年4月11日,凌晨3:40
#5 楼
您必须停止Mongo,删除管理文件,然后启动Mongosudo service mongod stop
mv /data/admin.* .
sudo service mongod start
评论
这将破坏管理用户数据库,并允许通过“ localHostExcetption”进行访问,这不是在遇到问题时管理用户的好方法。
–daveh
14年4月16日在1:35
评论
确实删除身份验证还不够,谢谢!
–安德烈(Andrei)
17-10-18在16:03