mongodb安装好后第一次进入是不需要密码的,也没有任何用户,通过shell命令可直接进入。
进入之后可以需要创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证
创建用户
db.createUser({
user: "用户名",
pwd: "密码",
roles: [
{
role: "角色名",
db: "数据库"
}
]
})
角色
mongoDB的数据库角色分为内置角色和自定义角色,内置角色是MongoDB预定义的角色,操作的资源是在DB级别上。
内置角色只能控制User在DB级别上执行的操作,管理员可以创建自定义角色,控制用户在集合级别(Collection-Level)上执行的操作,即控制User在当前DB的特定集合上执行特定的操作。
内置角色
- 数据库用户角色(Database User Roles):
- read:授予User只读数据的权限
- readWrite:授予User读写数据的权限
- 数据库管理角色(Database Administration Roles):
- dbAdmin:在当前dB中执行管理操作
- dbOwner:在当前DB中执行任意操作
- userAdmin:在当前DB中管理User
- 备份和还原角色(Backup and Restoration Roles):
- backup
- restore
- 跨库角色(All-Database Roles):
- readAnyDatabase:授予在所有数据库上读取数据的权限
- readWriteAnyDatabase:授予在所有数据库上读写数据的权限
- userAdminAnyDatabase:授予在所有数据库上管理User的权限
- dbAdminAnyDatabase:授予管理所有数据库的权限
- 集群管理角色(Cluster Administration Roles):
- clusterAdmin:授予管理集群的最高权限
- clusterManager:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.
- clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限
- hostManager:管理Server
用户自定义的角色
在创建角色时,必须明确Role的四个特性:
- Scope:角色作用的范围,创建在Admin中的角色,能够在其他DB中使用;在其他DB中创建的角色,只能在当前DB中使用;
- Resource:角色控制的资源,表示授予在该资源上执行特定操作的权限;
- Privilege Actions:定义了User能够在资源上执行的操作
- Inherit:角色能够继承其他角色权限
启用权限认证
mongod 参数:--auth
默认值是不需要验证,即 --noauth,该参数启用用户访问权限控制;当mongod 使用该参数启动时,MongoDB会验证客户端连接的账户和密码,以确定其是否有访问的权限。如果认证不通过,那么客户端不能访问MongoDB的数据库。
mongod的--auth选项可以使用权限方式启动MongoDB
权限认证登陆
mongo 参数:--username <username>, -u <username>
mongo 参数:--password <password>, -p <password>
mongo 参数:--authenticationDatabase <dbname>
在连接mongo时,使用参数 --authenticationDatabase,会认证 -u 和 -p 参数指定的账户和密码。如果没有指定验证数据库,mongo使用连接字符串中指定的DB作为验证数据块。
在登陆后可以使用
db.auth("用户名","密码")
来验证某个用户和密码。
网友评论