首先要知道mongodb默认安装后是没有任何认证开启的,也就是说,所有能连接到服务器的人都能进数据查看,当然,你可以用防火墙来挡。但没有防火墙的保护,数据库暴露出来是非常危险的。
mongodb关于安全分为几个方面,主要是:认证,基于角色的访问控制(授权),审计,加密,部署和环境的安全(涉及到网络跟系统的访问环境)。
一 关于认证
使用用户名认证指令为:
mongo --port 27017 -u manager -p 12345678 --authenticationDatabase admin
创建系统级别的的admin用户,分配root角色,可以管理所有数据库,做任意的操作:
注意:创建用户产生的数据正常情况下应该保存在admin库统一管理,但也可以指定保存在其他数据库,先运行 use dbname,表示对dbname这个库操作,然后运行创建用户的命令之后,数据就保存在"dbname"数据库了
use admin
db.createUser(
{
user: "superuser",
pwd: "12345678",
roles: [ "root" ]
})或者创建指定数据库的管理员用户:
use admin
db.createUser(
{
user: "tracking",
pwd: "track",
roles: [
{ role: "readWrite", db: "user_data_tracking" }
, { role: "dbAdmin", db: "user_data_tracking" }
]
}
)创建专门管理用户的用户:
use admin
db.createUser(
{
user: "siteUserAdmin",
pwd: "password",
roles:
[
{
role: "userAdminAnyDatabase",
db: "admin"
}
]
})userAdminAnyDatabase和userAdmin区别
userAdminAnyDatabase Provides the same access to user administration operations as userAdmin, except it applies to all databases in the cluster.
use products
db.createUser(
{
user: "recordsUserAdmin",
pwd: "password",
roles:
[
{
role: "userAdmin",
db: "records"
}
]
})登录后可以查看用户权限,用此命令:
db.runCommand(
{
usersInfo:"manager",
showPrivileges:true
})只分配只读权限:
use reporting
db.createUser(
{
user: "reportsUser",
pwd: "12345678",
roles: [
{ role: "read", db: "reporting" },
{ role: "read", db: "products" },
{ role: "read", db: "sales" }
]
})mongo db 学习笔记 之二: mongodb 用户认证,布布扣,bubuko.com
mongo db 学习笔记 之二: mongodb 用户认证
原文地址:http://brucetam.blog.51cto.com/1863614/1540119