关于MongoDB
,刚从3.X
换成了4.X
,其实已经不是很想懂到底什么回事了,引擎不对啊、常用的工具无法登陆啊一堆问题,不过其实这些都不是很是问题,顶多把数据库删掉重做呗(这是不负责任的)。
重申一次,没什么事千万别直接升级
,请先备份
!
1、关于MongoDB跨版本登陆
服务器端运行4.X
的时候,客户端使用3.X
是无法登陆的,完事。
2、MongoDB权限的问题
首先,MongoDB
有许多权限,以下有说明:
Built-In Roles(内置角色):
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
引用自 追不上老鼠的猫的博客,不过估计他也是引用其他人的(因为看到网上一堆一样的)。
关键的只是上面加粗的两个权限,其中只赋予dbOwner
权限是不能读写的,必须同时赋予readWrite
权限。
P.S. 常用命令
以下这些也是抄自上述的博客:
- 创建用户
> use admin
switched to db admin
> db.createUser(
... {
... user: "dba",
... pwd: "dba",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "dba",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
不行了,我还是引用百度。
- 删除用户
db.dropUser('usertest')
- 修改权限
db.updateUser("usertest",{roles:[ {role:"read",db:"testDB"} ]})
#注:updateuser它是完全替换之前的值,如果要新增或添加roles而不是代替它
#则使用方法: db.grantRolesToUser() 和 db.revokeRolesFromUser()
------------------------------------------------------------------------------------------
db.grantRolesToUser("usertest", [{role:"readWrite", db:"testDB"},{role:"read", db:"testDB"}]) # 修改权限
db.revokeRolesFromUser("usertest",[{role:"read", db:"testDB"}]) # 删除权限: