2019-05-27——MongoDB 的用户授权

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("用户名","密码")来验证某个用户和密码。


https://www.cnblogs.com/zxtceq/p/7690977.html

转载于:https://www.jianshu.com/p/b04599336068

猜你喜欢

转载自blog.csdn.net/weixin_34408624/article/details/91198044