文章目录
1.注意事项
- mongoDB安装成功后,创建数据库后,创建collection提示没有权限:
error inserting documents: not authorized on imooc to execute command { insert: “users”, writeConcern: { getLastError: 1, w: 1 }, ordered: false, $db: “imooc” }
或者为collection创建用户角色时候提示:
Error: couldn’t add user: there are no users authenticated
原因: mongodb配置文件,mongodb.conf开启了权限认证,将auth=true,改为false,重启mongoDB服务。
- node.js后端上传成功后,开启对应端口,记得进入node后端项目bin目录下,启动www
否则引发如下错误:
[HPM] Error occurred while trying to proxy request /goods/list?page=1&pageSize=8&sort=1&priceLevel=all from localhost:8081 to http://47.93.118.61:8000 (ECON
NREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)
2.mongDB的安装
1.mongoDB安装:
$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.17.tgz
解压到/usr/local/目录下:
$ sudo tar -zvxf mongodb-linux-x86_64-rhel70-3.6.17.tgz -C /usr/local/
$ mv mongodb-linux-x86_64-4.0.0 mongodb //重命名
配置环境变量:
$ vim /etc/profile
在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容:
export PATH=/usr/local/mongodb/bin:$PATH //注意mongodb解压后的路径
或者配置该文件(原因自行百度):
$ sudo vim ~/.bashrc
同样添加上述export内容至文末。
保存后通过下述命令使环境变量生效
$ cd ~
$ source /etc/profile //source自己编辑的环境变量文件
2.创建数据库目录
$ cd /usr/local/mongodb
$ touch mongodb.conf //创建配置文件
$ mkdir data //创建数据存放目录
$ mkdir log //创建日志目录
$ cd log
$ touch mongodb.log //创建日志文件
修改mongodb配置文件。
$ vim /usr/local/mongodb/mongodb.conf
加入以下内容:
port=27017 #端口
dbpath= /usr/local/mongodb/data #数据库存文件存放目录
logpath= /usr/local/mongodb/log/mongodb.log #日志文件存放路径
logappend=true #使用追加的方式写日志
fork=true #以守护进程的方式运行,创建服务器进程
maxConns=100 #最大同时连接数
journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。
#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。
storageEngine=wiredTiger #存储引擎有mmapv1、wiretiger、mongorocks
bind_ip = 0.0.0.0 #这样就可外部访问了
auth = false #校验权限,注意权限校验初次不要开启,否则难以为数据库创建用户,用户创建成功后,再改为true,重启mongoDB服务
设置文件夹权限
$ cd /usr/local/mongodb
$ chmod 777 db //最高权限,读写执行
$ chmod 777 log
3.mongodb的启动与关闭
- 注意nginx配置文件路径
$ cd ~
$ mongod --config /usr/local/mongodb/mongodb.conf --auth //--auth,以权限验证方式启动
关闭数据库
$ ps aux |grep mongodb
$ sudo kill 进程ID // 进程id一般为第二竖行显示的这个,如下图ID为10046
eg: 第二列就是进程ID
root 10046 0.2 4.4 1028816 84688 ? SLl Jun17 1:34 mongod --config /usr/local/mongodbx86_64_3.6.17/mongodb.conf --auth
root 12935 0.0 0.0 112648 968 pts/0 S+ 10:03 0:00 grep --color=auto mongodb
4.mongoDB数据库添加用户角色
eg: 创建imooc数据库,并添加数据库权限,(创建一个用户,赋予用户root权限)
db.createUser(
{
user:"root",
pwd:"123456",
roles:[{role:"root",db:"imooc"}]
}
);
验证是否创建成功:
db.auth("root","123456");//账号和密码
附:添加用户时各个角色对应权限
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 备份恢复角色:backup、restore
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
查找数据库信息: 以数据库imooc的goods表集合为例
db.goods.find() //不带参数匹配所有数据
db.goods.findOne()//不带参数匹配所有数据,并格式化输出
3.本地MongoDB数据库Collections的JSON文件导出
- 本地数据中的集合打包成json文件,不带数据库用户密码
使用时替换对应数据库名和集合名
mongoexport -d database_name -c collection_name -o C:\Users\zhang\Desktop\collection_name.json --type=json
- 带密码的打包:
mongoexport -u username -p password -d database_name -c collection_name -o C:\Users\zhang\Desktop\collection_name.json --type=json
4.服务器MongoDB数据库Collections的JSON文件导入
-
首先,将上一步打包后的json文件通过xftp等工具上传至服务器
-
进入到mongdb安装位置的bin目录下(未建立环境变量,无法全局使用该命令),执行下面命令
无用户名和密码的数据库
mongoimport --db database_name --collection collection_name --file /file/collection.json
- 有用户名和密码的数据库
mongoimport -u username -p password --db database_name --collection collection_name --file /file/collection.json
5. 将远程数据库的collection直接导入到本地
mongoexport -h 远程服务器的IP地址 --port 端口号 -u user_name -p password -d database_name -c collection_name --type json --out C:\Users\zhang\Desktop\data.json