ubuntu安装MongoDB数据库

知识分子没文化
2021-06-11 / 0 评论 / 310 阅读 / 正在检测是否收录...

目录:

环境说明:

系统:ubuntu 20.04

MongoDB:V4.4.6

前言

MongoDB是一种面向文档的数据库管理系统,即非关系型数据库,用C++等语言撰写而成,以解决应用程序开发社区中的大量现实问题。MongoDB由MongoDB Inc.(当时是10gen团队)于2007年10月开发,2009年2月首度推出,现以服务器端公共许可(SSPL)分发。

MongoDB社区版是免费的,包含Windows、Linux和OS X的二进制版本。许多Linux包管理系统曾经包含MongoDB的包,由于许可证变更,MongoDB已经从DebianFedoraRed Hat Enterprise Linux发行版中被移除。

本篇博客中ubuntu安装MongoDB的过程参考自MongoDB官网Install MongoDB Community Edition on Ubuntu — MongoDB Manual,其他派系Linux安装MongoDB请参考:Install MongoDB Community Edition on Linux — MongoDB Manual

1、导入MongoDB公共 GPG 密钥

用以下命令从https://www.MongoDB.org/static/pgp/server-4.4.asc导入MongoDB公共GPG密钥:

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

出现OK字样表示导入成功。若中途提示gnupg未安装,用以下命令安装:

sudo apt-get install gnupg

安装之后尝试重新导入,直至出现OK字样。

2、创建列表文件

在ubuntu上创建列表文件/etc/apt/sources.list.d/mongodb-org-4.4.list,不同版本的ubuntu命令也不同(其实只是命令中的版本号不同):

# Ubuntu 20.04 (Focal):
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

# Ubuntu 18.04 (Bionic)
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

# Ubuntu 16.04 (Xenial)
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

若不确定系统版本号,用“lsb_release -a”命令查看,“Codename”一项即是版本号

3、用命令安装MongoDB

3.1 安装最新版本

输入以下命令安装MongoDB,默认安装最新版:

# 更新软件源中的所有软件列表:
sudo apt update

sudo apt-get install -y mongodb-org

3.2 安装指定版本

如果要安装指定版本,必须分别指定每个组件包和版本号,比如:

sudo apt-get install -y mongodb-org=4.4 mongodb-org-server=4.4 mongodb-org-shell=4.4 mongodb-org-mongos=4.4 mongodb-org-tools=4.4

如果只安装MongoDB-org = 4.4,并且不包含组件包,那么无论指定了哪个版本,都将安装每个 MongoDB 包的最新版本。

在安装完指定的MongoDB版本后,用apt命令升级软件时仍会升级到新版本的MongoDB。因此为了防止意外升级,可以将软件包固定在当前安装的版本上:

echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

4.启动MongoDB

要运行和管理mongod进程,将使用操作系统内置的init系统。Linux的新版本倾向于使用systemd(使用 systemctl 命令) ,而Linux的旧版本倾向于使用System v init(使用service命令)。这就导致不同的init系统操作mongod进程的命令不同,请根据系统的不同来使用。

如果不确定平台使用的是哪个init系统,请运行以下命令:

ps --no-headers -o comm 1

然后根据结果选择下面的相应命令:

systemd - 选择4.1 systemd (systemctl)

init - 选择4.2 System V Init (service)

4.1 systemed(systemctl):

# 启动MongoDB:
sudo systemctl start mongod

# 并将其加入开机启动项:
sudo systemctl enable mongod

# 用以下命令验证MongoDB是否启动运行成功:
sudo systemctl status mongod

# 停止MongoDB:
sudo systemctl stop mongod

# 重新启动MongoDB:
sudo systemctl restart mongod

若启动时,出现错误:“Failed to start mongod.service: Unit mongod.service not found”,则运行以下命令:

sudo systemctl daemon-reload

然后再次运行start命令即可:

sudo systemctl start mongod

4.2 System V Init(service):

# 启动MongoDB:
sudo service mongod start

# 用以下命令验证MongoDB是否启动运行成功:
sudo service mongod status

# 停止MongoDB:
sudo service mongod stop

# 重新启动MongoDB:
sudo service mongod restart

验证MongoDB启动成功是这样的:

01

MongoDB启动之后默认运行在27017端口。其配置文件在“/etc/mongod.conf”,运行端口等信息可在配置文件中修改。

5.管理MongoDB数据库

使用Robo 3T来管理MongoDB数据库,Robo 3T下载地址:Robomongo

开启远程连接之前,我们先要建立一个管理员用户,因为MongoDB默认是没有用户的。在控制台输入命令连接数据库:

mongo

# 如果更改了默认连接端口,则在连接时还需要指定连接端口
mongo -port 端口号

连接到数据库之后使用以下语句来建立一个管理员用户:

# 选择连接admin数据库
use admin

# 创建一个用户名为“root”,密码为“1234”管理员用户:
db.createUser(
    {
        user:"root",
        pwd:"1234",
        roles:[{role:"root",db:"admin"}]
    }
)

创建成功的话会有“successfully”字样提示。使用“db.getUsers()”命令可以查询当前所有用户。

默认情况下,MongoDB是不允许远程连接的,所以需要在/etc/mongod.conf配置文件中进行一些配置。编辑配置文件:

sudo nano /etc/mongod.conf

这是官网中对于配置文件mongod.conf每一个选项的详细介绍:Configuration File Options — MongoDB Manual

配置文件中有一项是”net“,下面的”bindIp“一项的值原来是127.0.0.1,表示只能由本机访问MongoDB数据库,为了能远程访问管理数据库,需要将这项的值修改为0.0.0.0

net:
  port: 27017
- bindIp: 127.0.0.1
+ bindIp: 0.0.0.0

同时,此时的数据库任何人使用任何网络都能连接,极度不安全。因此我们需要开启安全授权,同样的,在配置文件/etc/mongod.conf中添加如下内容:

security:
  authorization: "enabled"

修改完之后保存退出,然后重启mongod服务:

sudo systemctl restart mongod

然后我们就可以用这个用户登录管理数据库了。

更多MongoDB数据库用户的操作请参考:MongoDB添加用户 - MongoDB教程™ (yiibai.com)

打开Robo 3T客户端,新建一个Connection。输入服务器的ip地址或域名,端口填写默认的27017(或者修改之后的端口)。然后切换Authentication选项卡,在第一行前打上勾,输入框中输入用户名密码,填写完之后点击下面Test按钮,若是测试连接无误,点击Save保存下来,就能连接到数据库了。

02

附:在更改MongoDB连接端口时遇到的坑

MongoDB端口可以在配置文件/etc/mongod.conf进行更改,更改net选项下port的值即可。更改完需要重启MongoDB服务,下次用软件连接数据库时就要更换成更改后的端口。但是用mongo命令在控制台上登录数据库时,就会报错:

03

这是因为在用mongo命令是依然默认连接的是27017端口,而不是修改之后的端口,因此使用此命令时需要指定端口进行连接:

mongo -port 新端口

6.卸载MongoDB

首先停止mongod进程:

# systemed(systemctl):
sudo systemctl stop mongod

# System V Init(service):
sudo service mongod stop

删除以前安装的任何 MongoDB 包:

sudo apt-get purge mongodb-org*

删除 MongoDB 数据库和日志文件:

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

评论 (0)

取消