MongoDB用户授权和管理

MongoDB 用户权限管理手册

https://docs.mongodb.com/manual/reference/method/js-user-management/

链接MongoBD服务端

因为我配置了环境变量,所以直接执行mongo。要是没有配置,可以查看mongo的安装目录

执行,效果一样。

 创建用户

定义 

db.createUser(userwriteConcern)

{
  user: "<name>",
  pwd: "<cleartext password>",
  customData: { <any information> },
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ],
  authenticationRestrictions: [
     {
       clientSource: ["<IP>" | "<CIDR range>", ...]
       serverAddress: ["<IP>" | "<CIDR range>", ...]
     },
     ...
  ],
  mechanisms: [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ],
  passwordDigestor: "<server|client>"
}

参数详解

user(需要创建的用户信息)

  • user:新建用户名
  • pwd:新建用户密码
  • customData:存放一些用户相关的自定义数据
  • roles:数组类型,配置用户的权限

常用权限

角色类型权限级别
普通用户角色read、readWrite
数据库管理员角色dbAdmin、dbOwner、userAdmin
集群管理员角色clusterAdmin、clusterManager、clusterMonitor、hostManager
数据库备份与恢复角色backup、restore
所有数据库角色readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色root
核心角色__system

writeConcern(对写操作时的异常处理机制)

下面我们列一下WriteConcern的几种抛出异常的级别参数:

  • WriteConcern.NONE:没有异常抛出
  • WriteConcern.NORMAL:仅抛出网络错误异常,没有服务器错误异常
  • WriteConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。
  • WriteConcern.MAJORITY: 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作。
  • WriteConcern.FSYNC_SAFE: 抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘。
  • WriteConcern.JOURNAL_SAFE:抛出网络错误异常、服务器错误异常;写操作等待服务器提交到磁盘的日志文件。
  • WriteConcern.REPLICAS_SAFE:抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操作。

代码案例

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
mydb    0.000GB
test    0.000GB
> use mydb
switched to db mydb
> db.createUser({user:"lisi",pwd:"123456",roles:[{role:"readWrite",db:"mydb"},{
... "role" : "userAdmin",
... "db" : "mydb"
... }
... ]})
Successfully added user: {
	"user" : "lisi",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "mydb"
		},
		{
			"role" : "userAdmin",
			"db" : "mydb"
		}
	]
}
> 

使用lis账号登录

1、先停止mongo

2、修改启动配置为开启验证

3、启动

4、客户端用lisi账号登录

操作

查找指定用户

方法一

db.system.users.find()

方法二

db.getUser(username, args)

参数详解

username:要查找的用户名

args(查询用户时的附加参数)

  • showPrivileges:布尔值,默认为false。贤惠用户的权限
  • showCredentials:布尔值,默认为false。显示用户的password hash

查找全部用户

db.getUsers()

修改用户

定义

db.updateUser(username, update, writeConcern)

db.updateUser(
   "<username>",
   {
     customData : { <any information> },
     roles : [
               { role: "<role>", db: "<database>" } | "<role>",
               ...
             ],
     pwd: "<cleartext password>"
    },
    writeConcern: { <write concern> }
)

代码案例

db.updateUser(
    "lisi",{
        customData:{
            create_time:"2019-05-28",
            update_time:"2019-05-29"
        },
        pwd:"123456"
    }
)

修改用户密码

db.changeUserPassword(username, password)

参数详解

username:要修改的用户名

password:要修改的密码

mechanism:密码验证机制

  • SCRAM-SHA-1
  • MONGODB-CR

digestPassword:布尔值,是否为加密密码

代码案例

db.changeUserPassword("lisi", "1234567")

删除用户

方式一

db.system.users.remove(query)

方式二

db.removeUser(username)

方式三

db.dropUser(username, writeConcern) //从当前数据库删除用户

db.dropAllUsers(writeConcern) //从当前数据库删除所有用户

用户绑定角色

db.grantRolesToUser( "<username>", [ <roles> ], { <writeConcern> } )

用户角色解绑

db.revokeRolesFromUser( "<username>", [ <roles> ], { <writeConcern> } )

用户Shell登录权限

db.auth( <username>, <password> )

db.auth( {
   user: <username>,
   pwd: <password>,
   mechanism: <authentication mechanism>,
   digestPassword: <boolean>
} )

参考 : https://www.cnblogs.com/damingge/p/6507605.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2014Team

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值