MongoDB4.xxx 安装与配置
1、社区版 下载地址 www.mongodb.com/download-center/community ;
"install mongoDB compass" 不勾选;勾选后悔安装这个数据库管理工具;可以自定义目录;其他默认;
2、配置环境变量
安装目录下的 bin 目录 ; 如:C:z_MongoDBin;配置到系统环境变量中(控制面板系统和安全系统高级系统设置环境变量;
会自动添加到服务中了;重启运行命令 services.msc(window10)打开服务界面,此时已经自动添加到系统服务里面了,每次开机自动重启
3、创建超级管理员账户
use admin
db.createUser({
user:'admin',
pwd:'123456',
roles:[{role:'root',db:'admin'}]
})
删除超级账户:db.dropUers('admin');
C:z_MongoDBinmongod.cfg 找到这个配置文件 放开 security表示开启权限验证
这个文件有严格的格式,注意空格(1053错误,无法重启)
security:
authorization: enabled
注意:authorization 冒号 后面有个空格 去掉或多加一个空格都会报错;
4、用超级管理员账户连接数据库(用命令行)
mongo admin -u 用户名-p 密码
mongo 192.168.1.200:27017/test -u user -p password
其他链接方式:const url = 'mongodb://admin:123456@localhost:27017/';
5、使用超级管理员登录后,给某个数据库单独创建用户名,密码,及权限
use 数据库名
db.createUser({
user:"eggadmin",
pwd:"123456",
roles:[{role:"dbOwner",db:"eggcms"}]
})
6、数据库角色分类
(1)数据库用户角色:read、readWrite;
(2)数据库管理角色:dbAdmin、dbOwner、userAdmin;
(3)集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
(4)备份恢复角色:backup、restore;
(5)所有数据库角色: readAnyDatabase、readWriteAnyDatabase、 userAdminAnyDatabase、dbAdminAnyDatabase
(6)超级用户角色:root
7、基本管理命令
1、show users; // 查看当前库下的用户
2、db.dropUser("eggadmin") // 删除用户
3、db.updateUser("admin",{pwd:"password"}); // 修改用户密码
4、db.auth("admin","password"); // 密码认证 (数据库设置了密码,要认证后才能连接成功)
5、show tables // 列出该库下所有表
8、导出与恢复
MongoDB 4.4版本 之后 MongoDB数据库工具现在与MongoDB服务 分开发布 需要单独安装
1. 下载地址
2. windwos 下载后解压,配置到环境变量 path 中,然后就可以使用 mongodump、 mongorestore、 mongoimport、 mongoexport 命名来备份了
3. 在导入其他人的库后,应该清空 -->该库下的用户 -->再创建用户后再链接;
备份单个表
mongodump -u superuser -p 123456 --port 27017 --authenticationDatabase admin -d myTest -c d -o /backup/mongodb/myTest_d_bak_201507021701.bak
备份单个库
mongodump -u superuser -p 123456 --port 27017 --authenticationDatabase admin -d myTest -o /backup/mongodb/
备份所有库
mongodump -u superuser -p 123456 --authenticationDatabase admin --port 27017 -o /root/bak
备份所有库推荐使用添加--oplog参数的命令,这样的备份是基于某一时间点的快照,只能用于备份全部库时才可用,单库和单表不适用:
mongodump -h 127.0.0.1 --port 27017 --oplog -o /root/bak
同时,恢复时也要加上--oplogReplay参数,具体命令如下(下面是恢复单库的命令):
mongorestore -d swrd --oplogReplay /home/mongo/swrdbak/swrd/
恢复单个库:
mongorestore -u superuser -p 123456 --port 27017 --authenticationDatabase admin -d myTest /backup/mongodb/
恢复所有库:
mongorestore -u superuser -p 123456 --port 27017 --authenticationDatabase admin /root/bak
恢复单表
mongorestore -u superuser -p 123456 --authenticationDatabase admin -d myTest -c d /backup/mongodb/myTest_d_bak_201507021701.bak/myTest/d.bson
注意:
1.mongorestore恢复数据默认是追加,如打算先删除后导入,可以加上--drop参数,不过添加--drop参数后,会将数据库数据清空后再导入,如果数据库备份后又新加入了数据,也会将新加的数据删除,它不像mysql有一个存在的判断
2.mongodump在mongo关闭时,也是可以备份的,不过需要指定数据目录,命令为:mongodump --dbpath /data/db
9、mongodump与mongoexport的区别:
1. mongodump导出的是bson格式,是二进制形式,不过可以使用mongo自带的bsondump命令查看里面的数据,而mongoexport导出的则是文本,可以是csv、json格式。
2. JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。
3. 在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,具体要看版本之间的兼容性。
当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是 一个可选项。跨版本的mongodump/mongorestore个人并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)
4. JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意。