我在Windows 2012 Server上安装了MongoDB并在Windows服务上运行它.
为了保护它免受匿名登录的影响,我按照以下步骤启用了身份验证和禁用匿名访问
mongod或mongos实例.authkeyFileCreate a User Administrator.mongod或mongos实例.authkeyFile根据文档,通过运行此shell命令
db.auth(<username>,<password>)
它应该打开授权并重新启动它应该禁用匿名访问的实例.
我不确定第3步是什么意思,我停止了MongoDB服务并重新启动它. 但我仍然可以匿名登录到远程MongoDB
如何禁用对MongoDB的匿名访问?
更新
执行db.serverCmdLineOpts()
/* 0 */
{
"argv" : [
"c:\\Program Files\\mongodb\\bin\\mongod.exe",
"--directoryperdb",
"--dbpath",
"c:\\mongodb\\data",
"--logpath",
"c:\\mongodb\\log\\mongodb_master.log",
"--logappend",
"--rest",
"--service"
],
"parsed" : {
"dbpath" : "c:\\mongodb\\data",
"directoryperdb" : true,
"logappend" : true,
"logpath" : "c:\\mongodb\\log\\mongodb_master.log",
"rest" : true,
"service" : true
},
"ok" : 1
}
Run Code Online (Sandbox Code Playgroud)
这意味着我没有auth密钥.如何在那里设置身份验证密钥?
Ste*_*nie 16
要完全禁用匿名身份验证,您需要确保:
admin数据库.在创建第一个管理员用户之前,默认情况下会有一个localhost bypass允许您匿名登录并设置第一个用户的用户.
要检查管理数据库中是否至少有一个用户,请运行:
db.getSiblingDB('admin').system.users.find()
Run Code Online (Sandbox Code Playgroud)
auth启用启用(独立服务器)或keyFile启用(副本集)的MongoDB服务器.该keyFile选项意味着auth,并用于副本集节点之间的内部身份验证.
要检查正在运行的MongoDB实例的配置设置,你可以参考的输出db.serverCmdLineOpts()中的一个mongo壳.
如果选项已从默认值更改,则它们应显示在parsed 输出部分中.也就是说,其中一个应该返回true:
db.serverCmdLineOpts().parsed.auth
db.serverCmdLineOpts().parsed.keyFile
Run Code Online (Sandbox Code Playgroud)
在2.6+版中启用授权-格式为yml:
security:
authorization: enabled
Run Code Online (Sandbox Code Playgroud)
还请注意,如果您使用的是安全配置(例如密钥文件配置),
security:
authorization: enabled
Run Code Online (Sandbox Code Playgroud)
不需要密钥,这就是为什么您可能会看到不带此标志的配置文件的原因...另一个说明:在最新版本的4.x中,您还需要配置访问IP列表:net:bindIp :: ,, 0.0.0.0#进行绑定所有v4和v6 ip地址,或使用建议用于生产的特定主机访问的特定地址
要么
net:
net.bindIpAll: true #to bind all ip addresses
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19715 次 |
| 最近记录: |