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
数据库,且无需将管理员账户公开