上个周在服务器上安装了MongoDB,刚刚过了几天就已经记不起是怎么安装的了,甚至是通过包管理器安装还是下载安装包安装的也不记得,因此今天专门写一篇教程。安装MongoDB是因为一个项目基于Keystonejs,它需要MongoDB数据库。这篇文章安装的是社区版MongoDB,对于如何通过Docker运行MongoDB会专门通过一篇文章介绍。

安装MongoDB社区版

1 导入Public Key

执行下面的命令导入MongoDB的GPG公钥

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

2 创建MongoDB源列表文件

创建/etc/apt/sources.list.d/mongodb-org-3.4.list源列表文件,不同版本的Ubuntu需要的命令不一样

Ubntu 12.04

echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Ubuntu 14.04

echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Ubuntu 16.04

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

3 更新本地包数据库

执行下面的命令更新本地包数据库

sudo apt-get update

4 安装MongoDB包

执行下面的命令安装MongoDB最新稳定版本

sudo apt-get install -y mongodb-org

运行MongoDB

1 启动MongoDB

执行下面的命令启动MongoDB

sudo service mongod start

2 验证MongoDB是否启动成功

检查/var/log/mongodb/mongod.log的日志文件确定是否启动成功,如包含下面的内容则表示启动成功

[initandlisten] waiting for connections on port <port>

<port>是在/etc/mongod.conf中配置的,默认为27017

3 停止MongoDB
执行下面的命令停止MongoDB

sudo service mongod stop

4 重启MongoDB
执行下面的命令重启MongoDB

sudo service mongod restart

卸载MongoDB

完全删除MongoDB,需要删除MongoDB程序本身,配置文件,以及包含数据和日志的目录,下面的卸载的步骤。

1 先停止MongoDB
执行下面的命令停止MongoDB

sudo service mongod stop

2 删除MongoDB包
删除安装的MongoDB包

sudo apt-get purge mongodb-org*

3 删除数据目录
删除MongoDB数据库和日志文件

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

配置MongoDB

MongoDB运行默认使用的配置文件是/etc/mongod.conf
启动MongoDB的时候可以指定使用的配置文件

sudo service mongod start --config /etc/mongod.conf

一般安装MongoDB之后,要做一些基本的配置,比如新建用户、启用登录认证、允许远程连接等。MongoDB自带一个Javascript shell,在Terminal中执行mongo就可进入。

1 创建用户

首先切换到admin数据库

use admin

创建一个名为cxlt的管理员用户

db.createUser({ user:'cxlt', pwd:'123456', roles:[{role:'userAdminAnyDatabase',db:'admin'},{role:'dbAdminAnyDatabase',db:'admin'}] })

也可以为指定的数据库创建用户,下面的命令是为demo数据库创建了一个demo01的用户

use demo
db.createUser({ user:'demo01',pwd:'123456',roles:[{role:'dbOwner',db:'demo'}]})

2 启用登录认证

打开/etc/mongod.conf,找到security,去掉注释

security:
  authorization: enabled

启用登录后,就需要使用db.auth('cxlt','123456')认证后,才能操作。

3 启用远程连接

打开/etc/mongod.conf,找到bindIp,注释掉

net:
  port: 27017
  # bindIp: 127.0.0.1

备份/还原MongoDB数据库

MongoDB可以备份整个数据库,也可以备份单个Collection
1 备份数据库

备份数据库的命令为mongodump,它有一些常用参数
-h 要备份的MongoDB所在的主机地址,默认为localhost:27017
-u 用户名
-p 密码
--authenticationDatabase 用户所在的数据库,默认为admin
-d 要备份的数据库,如果不指定备份的数据库,则备份所有的数据库
-c 要备份的collection,如果不指定collection,则备份整个数据库
--gzip 压缩备份,备份的时候使用该参数,还原的时候也要指定该参数
-o 备份存放的目录,如果不指定,默认为当前目录的dump目录下
--archive 备份为档案文件

2 还原数据库

还原数据库的命令为mongorestore,它的一些常用参数
-h 要还原的MongoDB所在的主机地址,默认为localhost:27017
-u 用户名
-p 密码
--authenticationDatabase 用户所在的数据库,默认为admin
-d 要还原的数据库
-c 要还原的collection
--gzip 备份的时候使用该参数,还原的时候也要指定该参数
--archive 从档案文件还原

3 一些例子

备份所有的数据库

mongodump

备份数据库demo

mongodump -d demo

压缩备份数据库文件

mongodump --gzip -d demo

备份数据库demo的user集合

mongodump -d demo -c user

备份数据库demo,将备份文件存储到~/mongodump目录

mongodump -d demo -o ~/mongodump

备份154.23.42.10服务器上的demo数据库

mongodump -h 154.23.42.10 -u cxlt -p 123456

备份demo数据库为一个档案文件

mongodump --archive=demo.20170717.archive -d demo

压缩备份的档案文件

mongodump --gzip --archive=demo.20170717.gz -d demo

还原数据库demo

mongorestore -d demo dump/demo

从压缩的备份文件还原demo数据库

mongorestore --gzip -d demo dump/demo

从档案文件还原demo数据库

mongorestore --archive=demo.20170717.archive -d demo

从压缩的档案文件还原demo数据库

mongorestore --gzip --archive=demo.20170717.gz -d demo 

MongoDB客户端

目前我使用的MongoDB客户端是Robo 3T,免费,当然它也有更专业强大的Studio 3T,不过Robo 3T已经足够用了。
官网地址:https://www.robomongo.org/,用法也很简单,这里就不再介绍了

参考文档

https://docs.mongodb.com/master/tutorial/install-mongodb-on-ubuntu/
https://docs.mongodb.com/manual/reference/method/db.createUser/
https://docs.mongodb.com/manual/reference/program/mongodump/
https://docs.mongodb.com/manual/reference/program/mongorestore/
https://docs.mongodb.com/manual/reference/program/mongoimport/
https://docs.mongodb.com/manual/reference/program/mongoexport/

如果有什么问题欢迎扫描下方二维码关注“chengxulvtu"公众号。

Ubuntu 16.04安装MongoDB-程序旅途