我在玩弄权限并将自己锁定在Mongo数据库之外。我很确定我是通过尝试显式添加对数据库的访问权限来做到这一点的,但是我改写了只允许对数据库的权限。因此,我实际上被锁定在Mongo数据库之外,如果我拥有添加用户特权,那么我阅读的所有内容都将告诉我如何创建超级用户。现在,我认为我没有任何拥有该特权的用户。有没有办法将数据库作为所有访问权限输入?我拥有服务器并具有root用户访问权限。

#1 楼

如果您已锁定自己,则需要执行以下操作:


停止MongoDB实例
从MongoDB配置中删除--auth和/或--keyfile选项禁用身份验证
在不进行身份验证的情况下启动实例
根据需要编辑用户
在启用身份验证的情况下重新启动实例


评论


确实删除身份验证还不够,谢谢!

–安德烈(Andrei)
17-10-18在16:03



#2 楼

创建用户而不先添加超级用户时,我遇到了类似的问题。以下步骤有助于解决该问题:


使用sudosudo 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,删除管理文件,然后启动Mongo

sudo service mongod stop
mv /data/admin.* .
sudo service mongod start


评论


这将破坏管理用户数据库,并允许通过“ localHostExcetption”进行访问,这不是在遇到问题时管理用户的好方法。

–daveh
14年4月16日在1:35