下载

1
2
3
4
5
6
7
8
9
cd /usr/local/

mkdir mongodb

cd mongodb/

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.7.tgz 下载

tar -zxvf mongodb-linux-x86_64-4.0.7.tgz 解压

新建文件夹放数据库数据和log

1
2
3
4
cd mongodb-linux-x86_64-4.0.7/bin

mkdir -p logs
mkdir -p data/db

授权

1
2
chmod  777  logs
chmod 777 data

新建mongodb.conf

创建一个mongodb.conf 直接 vim mongodb.conf

1
2
3
4
5
6
7
8
9
10
11
12

dbpath = /usr/local/mongodb/mongodb-linux-x86_64-4.0.7/bin/data/db #数据文件

logpath =/usr/local/mongodb/mongodb-linux-x86_64-4.0.7/bin/logs/mongodb.log #日记文件

port = 27017 #端口号 默认

fork = true #后台启动

bind_ip=0.0.0.0 #可外网访问

auth = true #增加用户授权认证 创建用户后再加这个

启动服务

bin目录下:

1
./mongod -f mongodb.conf

查看进程

1
ps aux |grep mongodb

杀死 mongodb 的进程

尽量不要 kill -9 进程的 pid 58784
数据库直接关闭,数据丢失,数据文件损失,修复数据库(成本高,有风险)

1
kill -2 进程号

mongodb常用命令

开启用户验证

为了安全性,链接数据库时最好开启用户验证,mongodb.conf中加上

1
auth=true
新建账户
1
2
3
4
db.createUser({user:”账号”,pwd:”密码”,roles:[{“role”:”userAdmin”,”db”:”admin”},{“role”:”root”,”db”:”admin”},{“role”:”userAdminAnyDatabase”,”db”:”admin”}]})

eg:
db.createUser({user:"lili",pwd:"password",roles:["userAdmin"]})
roles
  • Read:允许用户读取指定数据库

  • readWrite:允许用户读写指定数据库

  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

  • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

  • root:只在admin数据库中可用。超级账号,超级权限(本次创建的就是超级账号)

查看所有账户
1
db.system.users.find()
删除账户
1
db.dropUser("username")
验证
1
db.auth("admin","password")
查看所有的库
1
show dbs
切换库
1
use admin
查看所有的集合(表)
1
show collections
查看表数据
1
2
db.表名.find()
db.表名.find().pretty()

本地链接

mac使用图形化工具mongoHub, node中使用mongooes;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//  链接规则
// mongodb://username:password@host:port/dbName?authSource=dbName
// eg:
const mongoose = require('mongoose');
const { dbName, host, port, user, password } = require('../config/config').database;
const db = `mongodb://${user}:${password}@${host}:${port}/${dbName}?authSource=${dbName}`;

exports.connect = () => {
// 连接数据库
mongoose.connect(db, { useNewUrlParser: true });

let maxConnectTimes = 0;
//监听事件
mongoose.connection.on('disconnected', () => {
console.log('disconnected');
if (maxConnectTimes <= 3) {
maxConnectTimes++;
mongoose.connect(db);
return
}
throw new Error('db error');
})

mongoose.connection.on('error', (err) => {
if (maxConnectTimes <= 3) {
maxConnectTimes++;
mongoose.connect(db);
return
}
throw new Error('db error:' + err);
})

mongoose.connection.on('connected', () => {
console.log('mongo connect success');
})
}