准备阶段 :
查询数据库: show dbs
进入数据库: use MYDB
查询数据库中表: show tables
在mongo中创建新的用户 并赋予相应权限:
db.createUser({
user:<name_string>, #字符串
pwd:<password_string>, #字符串
roles:[{role:<role_name>,db:<db_name>}] #数组+对象
})
user文档字段介绍:
user字段,为新用户的名字;
pwd字段,用户的密码;
cusomData字段,为任意内容,例如可以为用户全名介绍;
roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色;
在roles字段,可以指定内置角色和用户定义的角色。
Built-In Roles(内置角色):
-
数据库用户角色:read、readWrite;
-
数据库管理角色:dbAdmin、dbOwner、userAdmin;
-
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
-
备份恢复角色:backup、restore;
-
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
-
超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) -
内部角色:__system
举例:给admin添加一个root用户
use admin
db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})
mongodb.conf文件中加入 auth=true
验证用户
use admin
db.auth("admin","123456")
删除用户
db.dropUser(<user_name>) 删除某个用户,接受字符串参数
db.dropAllUser() 删除当前库的所有用户
注意: 在mongo4.0版本中 配置用户认证需要在mongod.cfg中
security:
authorization: enabled
重新启动服务: mongod -f "C:Program FilesMongoDBServer4.0inmongod.cfg"
数据库迁移 :
-
使用mongo自带命令来进行迁移数据库,先导出集合数据再导入数据库中
数据导出:mongoexport -d dbname -c collectionname -o filepath --type json/csv -f field
数据导入:mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
-
连接远程mongodb备份导入导出
连接远程数据库:mongo -u username -p pwd host:post/database(数据库名)
注:当该用户有相应权限时,可以查看collection==>查看集合命令:show collections
备份导出:mongodump -h dbhost -d dbname -o dbdirectory
备份恢复:mongorestore -h dbhost -d dbname dbdirectory
-
可视化工具迁移
详细步骤:https://jingyan.baidu.com/article/63f236287e91c40208ab3d11.html
-
注意:设置用户认证后需要:先连接进入mongo -u admin -p 123456 127.0.0.1:17072/admin
-
迁移到阿里云上:
#mongodump的具体命令请参考mongo的帮助文档
mongodump -h [源MongoDb地址,比如:10.10.10.10:27017] -d [需要下载的数据库名]
mongorestore --host [上图中查得的地址] --authenticationDatabase admin -u root
详细步骤 :https://help.aliyun.com/document_detail/26625.html
数据导出:
mongoexport -d dbname -c collectionname -o filepath --type json/csv - field
-d:数据库名
-c:集合名称
-o : 导出数据文件的路径
-type : 导出数据类型,默认json
数据导出:
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
-d:数据库名
-c:集合名称
--file : 选择导入的文件
-type : 文件类型,默认json
-f : 字段,type为csv是必须设置此项
数据备份:
mongodump -h dbhost -d dbname -o dbdirectory
例如 : mongodump -h 127.0.0.1:17072 -d mydb -o C:Users91178
-h:MongDB所在服务器地址,例如:127.0.0.1
-d:需要备份的数据库实例
-o:备份的数据存放目录,系统自动在转储目录下建立一个备份的数据库名称的目录,这个目录里面存放该数据库实例的备份数据
数据库恢复:
mongorestore -h dbhost -d dbname dbdirectory
例如:mongorestore -h 127.0.0.1:17072 -d mydb Users91178dncloud
(在网上搜索到的都是 mongorestore -h dbhost -d dbname -directoryperdb dbdirectory)
-h:MongoDB中的所在服务器地址
-d:需要恢复的数据库实例
-directoryperdb:备份数据所在位置
数据备份恢复实例:
1.首先在阿里云服务器上备份mongodb的数据(将阿里云服务器的数据库数据备份成JSON文件)
mongodump -h 127.0.0.1 -d FbGameData -o /usr/
2.查看备份的文件(查看备份成功的文件夹内容)
cd /usr/FbGameData
3.将备份文件夹打包压缩
tar -zcvf FbGameData.tar.gz FbGameData
4.本地SCP拉取服务器备份文件压缩包 (跨主机传输文件)
scp root@47.92.215.62:/usr/FbGameData.tar.gz ./
5.解压缩(省略)然后恢复数据(前提是要在本地创建同名数据库)
mongorestore -h 127.0.0.1 -d FbGameData ./FbGameData /
排坑
-
在mongod.conf 中开启用户认证后, 如果不加--authenticationDatabase admin 会报认证错误
mongodump --port=17072 -uadmin -p123456 --db=dncloud -o C:Users91178 --authenticationDatabase admin
mongorestore --port=17072 -uadmin -p123456 -dmydb Users91178dncloud --authenticationDatabase admin
查看数据库占用磁盘大小: mongo admin --eval "printjson(db.runCommand({"listDatabases":1}))
添加用户权限:
use admin
db.auth("username","password")
db.createUser({
user:"11111111"
pwd:"2222"
roles:[{role:"root",db:"admin"}]
})
show users
任务管理器中启动mongdb