我已经在Windows 2012 Server上安装了MongoDB并在Windows服务上运行它。
为了防止匿名登录,我按照以下步骤启用身份验证并禁用匿名访问
Create the Administrator Credentials and then Enable Authentication
mongod
或mongos
设置的情况下启动auth
或keyFile
个实例。Create a User Administrator
。mongod
或mongos
设置重新启动auth
或keyFile
个实例。根据文档,通过运行此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
}
这意味着我没有授权密钥。如何在那里设置身份验证密钥?
答案 0 :(得分:15)
要完全禁用匿名身份验证,您需要确保:
admin
数据库。在创建第一个管理员用户之前,默认情况下会有一个localhost bypass
,允许您匿名登录并设置第一个用户。
要检查管理数据库中是否至少有一个用户,请运行:
db.getSiblingDB('admin').system.users.find()
auth
启用MongoDB服务器(独立服务器)或启用keyFile
(副本集)。 keyFile
选项隐含auth
,用于副本集节点之间的内部身份验证。
要检查正在运行的MongoDB实例的配置设置,您可以参考db.serverCmdLineOpts()
shell中mongo
的输出。
如果选项已从默认值更改,则它们应显示在输出的parsed
部分中。也就是说,其中一个应该返回true:
db.serverCmdLineOpts().parsed.auth
db.serverCmdLineOpts().parsed.keyFile
答案 1 :(得分:4)
在2.6+版本中启用授权 - 它采用yml格式:
security:
authorization: enabled
另请注意,如果您使用的是安全配置,例如密钥文件配置,
security:
authorization: enabled
键不是必需的,这就是为什么你可能会看到没有这个标志的配置文件... 另一个说明: 在最新版本中,4.x还需要配置访问IP列表: 净: bindIp :: ::,0.0.0.0#绑定所有v4和v6 ip地址,或使用特定主机访问的特定地址,建议用于生产
或
net:
net.bindIpAll: true #to bind all ip addresses
答案 2 :(得分:1)
我不确定第3步是什么意思
将文档发送到Install MongoDB On Windows ...
将MongoDB作为Windows运行时,应指定两个选项 服务:日志输出的路径(即logpath)和配置 文件。
这意味着您的mongod
命令(在Windows服务中定义)应如下所示:
c:\mongodb\bin\mongod.exe --config c:\mongodb\mongod.cfg
在你的配置文件中(无论它在我上面的例子中是什么叫mongod.cfg)你都希望有这样的一行:
auth = true
试试看,看看它是否有效。如果您的服务定义不包含“--config”选项,请重新安装您的服务(遵循我引用的文档)以添加它。
答案 3 :(得分:1)
您必须使用--auth命令行选项重新启动mongod实例(在shell中运行它):
mongod --auth --port 27017 --dbpath /var/lib/mongodb
请记住,mongodb的路径可能不同,因此您可以检查mongodb配置文件中的dbPath
值:
sudo vi /etc/mongod.conf