MongoDB 5.0版本已发布,官方建议Ubuntu用户通过apt命令安装,这种方式可以自动补全所有依赖包、自动生成mongod.conf配置文件并且方便未来的升级和运维。

本教程使用Ubuntu 20.04版本的系统,并全程在root账户下演示(sudo -i)。

Ubuntu官方的mongodb包并不是MongoDB公司发布的最新版本,因此需要先做一些安装配置。

导入GPG公钥

导入GPG公钥用于数据传输,成功后会在下方显示OK

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

若提示gnupg未安装,安装后再重试

apt-get install gnupg

创建list文件

直接运行以下命令将内容写入文件,本教程使用清华大学镜像站的MongoDB镜像地址,如需使用官方地址可把下列命令中的http://mirrors.tuna.tsinghua.edu.cn/mongodb换成https://repo.mongodb.org

Ubuntu 20.04的版本

echo "deb [ arch=amd64,arm64 ] http://mirrors.tuna.tsinghua.edu.cn/mongodb/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

Ubuntu 18.04的版本

echo "deb [ arch=amd64,arm64 ] http://mirrors.tuna.tsinghua.edu.cn/mongodb/apt/ubuntu bionic/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

Ubuntu 16.04的版本

echo "deb [ arch=amd64,arm64 ] http://mirrors.tuna.tsinghua.edu.cn/mongodb/apt/ubuntu xenial/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

安装MongoDB

先更新APT源,然后安装最新稳定版本的MongoDB

sudo apt-get update
sudo apt-get install -y mongodb-org

启动MongoDB

首先为mongod.service文件建立一个软链接

ln -s /lib/systemd/system/mongod.service /etc/systemd/system/mongod.service

将MongoDB的启动用户设为root账户:vi /etc/systemd/system/mongod.service

[Service]
User=root
Group=root

类UNIX系统默认的资源限制机制会影响MongoDB的使用,确保文件中加入了以下内容(本方法仅适于使用systemd的系统,低版本系统可能无法成功,执行ps --no-headers -o comm 1命令查看你的init系统)

[Service]
# 省略其它配置项
# (文件大小)
LimitFSIZE=infinity
# (占用CPU时间)
LimitCPU=infinity
# (虚拟内存大小)
LimitAS=infinity
# (驻留集大小)
LimitMEMLOCK=infinity
# (打开文件数)
LimitNOFILE=64000
# (进程数/线程数)
LimitNPROC=64000

保存后,重载一下配置文件

systemctl daemon-reload

修改MongoDB配置文件:vi /etc/mongod.conf,其中dbPath设置数据存储位置,systemLog.path设置日志文件位置;bindIp为客户端IP白名单,设为0.0.0.0表示接受所有主机连接;fork设为true表示在后台运行,而systemd已经将MongoDB作为守护进程运行了,无需再次配置。关于配置文件的更多细节,参见官方文档

storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
net:
  port: 27017
  bindIp: 0.0.0.0
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

启动MongoDB

systemctl start mongod

查看MongoDB的运行状态,若状态为active (running)则表示正常运行

systemctl status mongod

也可设置为开机自启动

systemctl enable mongod

添加用户和数据库

在同一台机器上,直接在命令行执行mongo,即可连接上本机的MongoDB

创建一个管理员账户,用于新建用户和数据库等

use admin
db.createUser({ user: 'adminuser', pwd: 'Abc123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })

登录管理员账户,新建数据库并创建可访问该数据库的普通用户

use admin
db.auth("adminuser", "Abc123456")
use test
db.createUser({user:"testuser",pwd:"t6st4321",roles:["readWrite"]})

此时可使用testuser用户远程访问test数据库,且无需将管理员账户公开