在mongodb中创建安全数据库
我想在mongodb中创建一个安全的数据库在mongodb中创建安全数据库,mongodb,Mongodb,我想在mongodb中创建一个安全的数据库 安全意味着应用程序必须传递用户名/密码才能连接到mongodb中的我的数据库。来自MongoJava教程 MongoDB可以在安全模式下运行,通过名称和密码身份验证控制对数据库的访问。在此模式下运行时,任何客户端应用程序在执行任何操作之前都必须提供名称和密码。在Java驱动程序中,只需对连接的mongo对象执行以下操作: boolean auth = db.authenticate(myUserName, myPassword); 如果名称和密码对数
安全意味着应用程序必须传递用户名/密码才能连接到mongodb中的我的数据库。来自MongoJava教程 MongoDB可以在安全模式下运行,通过名称和密码身份验证控制对数据库的访问。在此模式下运行时,任何客户端应用程序在执行任何操作之前都必须提供名称和密码。在Java驱动程序中,只需对连接的mongo对象执行以下操作:
boolean auth = db.authenticate(myUserName, myPassword);
如果名称和密码对数据库有效,则auth将为true。否则,它将是错误的。您应该查看MongoDB日志以了解更多信息(如果可用)
大多数用户在可信环境中运行MongoDB而不进行身份验证
配置身份验证和安全性 身份验证存储在每个数据库的system.users集合中。例如,在数据库projectx上,projectx.system.users将包含用户信息 我们应该首先为整个db服务器进程配置一个管理员用户。此用户存储在特殊管理数据库下
> use projectx
> db.addUser("joe", "passwordForJoe")
如果在admin.system.users中未配置任何用户,则可以从localhost界面访问数据库,而无需进行身份验证。因此,从运行数据库的服务器(以及本地主机)运行数据库shell并配置管理用户:
$ ./mongo
> use admin
> db.addUser("theadmin", "anadminpassword")
我们现在有一个为数据库管理员创建的用户。请注意,如果我们以前没有进行过身份验证,那么如果我们希望执行进一步的操作,现在必须进行身份验证,因为admin.system.users中有一个用户
> db.auth("theadmin", "anadminpassword")
我们可以使用以下命令查看数据库的现有用户:
> db.system.users.find()
现在,让我们为另一个数据库配置一个“常规”用户
> use projectx
> db.addUser("joe", "passwordForJoe")
最后,让我们添加一个只读用户。(仅在1.3.2+中支持)
- 为mongo实例创建管理员用户
>使用admin
db.addUser(“admin”,“xyzxyz”)
- 切换到需要身份验证的数据库
>使用newdb
>db.addUser(“新用户”、“strongpwd”)
- 停止mongo实例/服务。如果mongodb是通过
安装的,则将其配置为服务李>ppa
sudo服务mongodb站
如果是从源代码处安装的,请使用以下命令停止进程:
/etc/init.d/mongodb-stop
- 将配置文件更改为默认使用身份验证
vim/etc/mongodb.conf
auth=true
- 启动mongodb。如果是服务
sudo服务mongodb重启
否则
mongod--config/etc/mongodb.conf
- 检查是否启用了身份验证:
>在newdb
上显示集合应给出错误
"$err" : "not authorized for query on newdb.system.namespaces",
"code" : 16550
之后应该工作
>db.auth(“新用户”、“strongpwd”)
现在dbnewdb
已被保护。因此,您在管理数据库中创建了管理员admin
,然后使用--auth
选项重新启动mongod。为什么现在,如果您执行/mongo admin
,您将自动登录,而不提供用户和密码?在这种情况下,您已经启动了mongo shell,但尚未通过身份验证。尝试执行任何操作,例如显示集合
,您将收到未经授权的
错误。