伍- MongoDB登陆那些小事

为了避免有问题,我决定加一行

关于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. 常用命令

以下这些也是抄自上述的博客:

  1. 创建用户
    > 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"
         }
     ]
    }
    

不行了,我还是引用百度

  1. 删除用户
db.dropUser('usertest')
  1. 修改权限
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"}])   # 删除权限:
P.S.. 我还是去冲凉吧。