mongodb中的管理实用命令

Mongodb中的操作方法的命令非常标准,这有助于我们能够理解、更好记住这些方法,达到熟练掌握。

1、用户

常识操作,无非包含了添、删、改、查。但有一个非常有意思的事情是,这些操作只能在相对应的db中,怎么理解呢?打比方说要给guohu库添加新用户,必需先执行use guohu,然后使用db.createUser()的方法,其他的方式类似。

db.createUser({user:"root",pwd:"root",roles:["root"]})
db.createUser({user:"guohu",pwd:"123456",roles:["readWrite"]})
db.dropUser("guohu")

db.updateUser("guohu",{roles:["dbAdmin"]})
db.updateUser("wanda",{pwd:"wanda"})

db.getUser("guohu")
db.getUsers()

#提供了一种修改密码方法,这种方法和使用updateUser修改,可能是因为缓存的问题,会出现一点小插曲,但如果修改完后,重启mongod,就没有问题了。
db.changeUserPassword("guohu","123456")

#添加、移除角色,也可以使用updateUser的方法
db.grantRolesToUser("wanda",["dbAdmin"])
db.revokeRolesFromUser("wanda",["dbAdmin"])

2、角色

这一块用的相对少,所以就简单罗列一下方法,本人比较懒,方法也是添、删、改、查,在加上一些快捷的延伸操作

db.createRole()

db.dropRole()
db.dropRoles()

db.updateRole()

db.getRole()
db.getRoles()

db.grantPrivilegesToRole()
db.revokePrivilegesFromRole()

db.grantRolesToRole()
db.revokeRolesFromRole()

3、Db

#目前没还没有亲测,这2个复制操作的区别。在不同实例间复制出现权限验证不通过,无法完成。但在同一实例
#中使用db.copyDatabase()可以完成.
db.copyDatabase(fromdb, todb, fromhost, username, password, mechanism) 
db.cloneDatabase(from) 

#删除后dbPath目录中的数据和索引会被删除
db.dropDatabase()

#锁定/解除数据库写操作。
db.fsyncLock()
db.fsyncUnlock()

#关闭
db.shutdownServer()

4、集合

5、mongodump、mongorestore、mongoexport、mongoimport

这两组操作的主要区别:1)mongodump和mongorestort主要是针对数据库的备份,而后者是针对collection的备份。2)备份数据的格式不同,mongodump和mongorestort备份格式BJON,而后者是JSON。前者的的数据小很多,但后者的数据可读性较强,这里主要介绍常规的数据库备份使用的mongodump和mongorestore

完整的例子
#在这里例子中,默认的-h localhost:27017 如果是本地实例,可以省略。 
#-d如果不指定,将dump所有的数据库.
#--gzip打包压缩导出
#--oplog这个特别注意,用来避免在dump操作时,还有客户端对db进行操作,进而影响dump的数据不准确
#加上--oplog后,dump的操作都将保存在.oplog文件中.在mongorestore中使用.
mongodump -h 192.168.80.122:27017 -d guohu -u root -p root -o /data/bak/ --gzip --oplog

#authenticationDatabase主要是用来指定-u 这个用户所在数据库.
mongorestore -h 192.168.80.122:27017 -d guohu -u root -p root 
--authenticationDatabase admin /data/bak

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>