下载
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
|
查看进程
杀死 mongodb 的进程
尽量不要 kill -9 进程的 pid 58784
数据库直接关闭,数据丢失,数据文件损失,修复数据库(成本高,有风险)
mongodb常用命令
开启用户验证
为了安全性,链接数据库时最好开启用户验证,mongodb.conf
中加上
新建账户
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.auth("admin","password")
|
查看所有的库
切换库
查看所有的集合(表)
查看表数据
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
|
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'); }) }
|