禁用对MongoDB的匿名访问
我已经在Windows 2012服务器上安装了MongoDB,并在Windows服务上运行它 为了防止匿名登录,我按照以下步骤启用身份验证并禁用匿名访问禁用对MongoDB的匿名访问,mongodb,Mongodb,我已经在Windows 2012服务器上安装了MongoDB,并在Windows服务上运行它 为了防止匿名登录,我按照以下步骤启用身份验证并禁用匿名访问 在不使用auth或keyFile设置的情况下启动mongod或mongos实例 按照创建用户管理员中的说明创建管理员用户 使用auth或keyFile设置重新启动mongod或mongos实例 根据文档,通过运行这个shell命令 db.auth(,) 它应该打开授权并重新启动实例。它应该禁用匿名访问 我不确定第三步是什么意思,我停止了Mon
auth
或keyFile
设置的情况下启动mongod
或mongos
实例创建用户管理员中的说明创建管理员用户
auth
或keyFile
设置重新启动mongod
或mongos
实例db.auth(,)
它应该打开授权并重新启动实例。它应该禁用匿名访问
我不确定第三步是什么意思,我停止了MongoDB服务并重新启动了它。
但我仍然可以匿名登录远程MongoDB
如何禁用对MongoDB的匿名访问
更新
执行db.serverCmdLineOpts()
这意味着我没有身份验证密钥。如何在那里设置身份验证密钥
我不知道第三步是什么意思
在文档之后
在将MongoDB作为Windows应用程序运行时,应该指定两个选项
服务:日志输出的路径(即logpath)和配置
文件
这意味着您的mongod
命令(在Windows服务中定义)应该如下所示:
c:\mongodb\bin\mongod.exe --config c:\mongodb\mongod.cfg
auth = true
在您的配置文件中(无论它叫什么,在我上面的示例中叫mongod.cfg),您都希望有这样一行:
c:\mongodb\bin\mongod.exe --config c:\mongodb\mongod.cfg
auth = true
试试这个,看看是否有效。如果您的服务定义不包含“-config”选项,请重新安装您的服务(遵循我引用的文档)以添加它。要完全禁用匿名身份验证,您需要确保: 1) 转到
管理
数据库。
在创建第一个管理员用户之前,默认情况下,有一个允许您匿名登录并设置第一个用户的
要检查管理数据库中是否至少有一个用户,请运行:
db.getSiblingDB('admin').system.users.find()
2) 在启用auth
的情况下启动MongoDB服务器(独立服务器)或启用keyFile
的情况下启动(副本集)。
keyFile
选项意味着auth
,用于副本集节点之间的内部身份验证
要检查正在运行的MongoDB实例的配置设置,可以参考mongo
shell中的db.serverCmdLineOpts()
的输出
如果选项已从默认值更改,则它们应显示在输出的parsed
部分。也就是说,其中一个应该返回true:
db.serverCmdLineOpts().parsed.auth
db.serverCmdLineOpts().parsed.keyFile
在版本2.6+中启用授权-采用yml格式:
security:
authorization: enabled
额外资料:
还要注意,如果您使用的是安全配置,如密钥文件配置,则
security:
authorization: enabled
密钥不是必需的,这就是为什么您可能会看到没有此标志的配置文件。。。
另一项说明:
在最新版本4.x中,您还需要配置访问IP列表:
净:
bindIp::,0.0.0.0#绑定所有v4和v6 ip地址,或使用建议用于生产的特定主机访问的特定地址
或
必须使用--auth命令行选项重新启动mongod实例(在shell中运行): 请记住,mongodb的路径可能不同,因此您可以检查mongodb配置文件中的
dbPath
值:
sudo vi /etc/mongod.conf
我让我的mongodb作为服务运行。我想我们可以从服务或配置文件中完成。现在,如果我尝试从命令或Powershell窗口运行此命令c:\mongodb\bin\mongod.exe--config c:\mongodb\mongod.cfg,我会得到“错误:无法从配置文件读取”,当您执行
类型c:\mongodb\mongod.cfg
时,您会得到什么输出?如果找不到,则需要创建它。您的配置文件不必命名为mongod.cfg。它必须在用户有权访问的位置可读。它正在使用命令提示符。所以我在“C:\Program Files\mongodb”下创建了mongod.cfg,并在cmd上运行了这个命令。。。。mongod.exe--config….mongod.cfg和我得到错误“无法读取配置文件”,并给了我其他允许选项--help--hI查看C:\\Program Files\Mongodb中的Mongodb出现的问题,命令没有从该路径运行,因此我将路径更改为C:\\Mongodb。但是在我运行MongoDB to as服务时,添加auth=true的配置文件并没有限制远程匿名访问。但是,当我手动运行MONGODB时,它正在检查凭据,以确保您的“匿名登录”仍然有效;您是否能够查看/创建数据?您需要能够匿名连接以运行auth命令,但如果启用了auth,您将没有任何权限运行任何其他命令。例如,show databases
将返回一个类似于listDatabases failed:{“ok”:0,“errmsg”:“unauthorized”}
的错误。我注意到解析的对象中没有身份验证密钥。我已使用db.serverCmdLineOpts()结果更新了我的问题。我如何才能在那里添加身份验证密钥?谢谢,我能够进行干净的安装并正确设置eh授权。将在其他计算机上复制相同的步骤server@HaBo:由于您的mongod
正在使用--service
选项运行,我猜您是按照以下步骤操作的。这将包括设置一个配置文件(例如c:\mongodb\mongod.cfg
)。您还需要将auth=true
添加到配置文件中,然后通过net stop MongoDB
和net start MongoDB
@deadManN重新启动MongoDB服务。请发布一个新问题,包括我之前建议的所有详细信息:您尝试了什么,任何错误消息,以及您的环境详细信息(O/S版本、MongoDB服务器版本、MongoDB部署类型)。没有关于您的环境和
sudo vi /etc/mongod.conf