linux ubuntu 下 mongodb 4.0 安装和配置远程连接

安装

搬运: 安装教程

选择对应版本,复制粘贴命令即可,这里就不涉及了。

安装完成后启动服务:
sudo service mongod start

如果提示Unit mongod.service not found,可以尝试以下命令:

1
2
sudo systemctl enable mongod
sudo systemctl daemon-reload

以上命令无效,可以创建 /lib/systemd/systemd/mongod.service 文件,然后填入以下内容:

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
[Service]
User=mongodb
Group=mongodb
EnvironmentFile=-/etc/default/mongod
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
PIDFile=/var/run/mongodb/mongod.pid
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false

# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

[Install]
WantedBy=multi-user.target

然后再输入前面两条命令激活服务。

服务启动完成后可以输入sudo service mongod status查看当前状态。

配置远程连接

编辑配置文件

1
sudo vim /etc/mongod.conf

4.0的配置文件采用yaml格式, 设定也有所不同。这里将 net.bindIp 设为 0.0.0.0即可。

:x退出,然后sudo service mongod restart重启服务即可。

配置用户

用户配置与之前版本无差异,使用db.createUser()创建用户即可。

1
2
3
4
5
6
7
8
9
10
11
use admin
db.createUser({
user: "admin",
pwd: "admin",
roles: [
{
role: "dbAdminAnyDatabase",
db: "admin"
}
]
})

启用认证

修改配置文件,添加:

1
2
security:
authorization: enabled

然后重启服务。

测试登录:

1
mongo --port 27017 -u admin -p admin --authenticationDatabase admin

配置成功就可以正常进入mongo shell了。

数据不兼容

从旧版本升级到mongodb 4.0可能会存在数据不兼容的问题,对应的服务错误码exitCode=62/n/a。可以先将现有数据导出,,然后进入/var/lib/mongodb, 删除目录下文件。启动完成后再导入历史数据。

如:

1
2
3
4
5
6
7
8
cd
mongodump -u admin -p admin -d test -o data # -d制定要导出的数据库名称
#......导出当前的所有库
cd /var/lib/mongodb
sudo rm ./* -r
sudo service mongod start
cd
mongorestore -u admin -p admin --dir data

admin库的导入导出可能存在问题,如果出现无法登录的问题,可以先关闭认证,然后db.changeUserPassword("username", "password")修改为之前的密码,完成后再启用认证。

参考文献