之前没有在本地管理远程服务器上的Mongodb数据库,近日想通过本地连接远程Mongodb的服务器的方式管理数据库,新版版的navicat是有连接mongodb的功能的,但是使用navicat连接远程的mongodb的数据库,提示
Server reports wire version 2, but this version of 3
,就是说远程服务器上的mongodb数据库是2.xx版本的,而本地使用的navicat支持的是3.xxx版本的
所以没法,只能在服务器上安装3.xxx以上版本的mongodb。
步骤一:备份数据库(备份之前mongodb中的数据库,我备份的是520byteBlog
数据库)
没有备份的话,参考我的这篇文章吧:MongoDB 4.0.13 备份(mongodump)和恢复(mongorestore)指定数据库
步骤二:如果之前装过mongodb数据库,要卸载掉之前的数据库。
- 2.1:停止mongod服务
sudo service mongod stop
- 删掉所有的mongod安装包
sudo apt-get purge mongodb-org*
- 2.2:删除数据文件和日志文件的目录
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
步骤三:服务器上安装mongodb数据库
- 3.1:导入MongoDB的公钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
- 3.2:创建MongoDB的列表文件
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.4:刷新包数据库
sudo apt-get update
- 3.5:安装MongoDB的包
sudo apt-get install mongodb-org -y
- 【核心注意点】在/lib/systemd/system下,用systemctl工具启动MongoDB,然后检查MongoDB的状态:
cd /lib/systemd/system
sudo systemctl start mongod
sudo systemctl status mongod
【强烈注意】:
执行sudo systemctl start mongod
命令后,如果没有报Failed to start mongod.service: Unit mongod.service not found.
的错误的话,请直接跳到 自启动mongodb步骤,否则还是按下面的方法老老实实的先解决问题,否则远程无法连接mongodb数据库。
大大大大大大大大坑:注意不是mongodb.service,而是mongod.service
执行
sudo systemctl status mongod
,查看mongod的状态,报了如下截图的错误- 3.6:解决办法:
取消被屏蔽的mongod.service
sudo systemctl unmask mongod
sudo service mongod start
sudo systemctl status mongod
-
3.7:自启动mongodb
sudo systemctl enable mongod
-
打开MongoDB shell中
mongo
步骤四 开启ubuntun上的mongodb数据库的远程访问
输入sudo vim /etc/mongod.conf
,
然后将bindIp: 127.0.0.1
改成bindIp: 0.0.0.0
.修改完之后,:wq
保存退出
最后,执行sudo service mongod restart
该命令即可。(相关命令sudo service mongod stop
,sudo service mongod start
)
步骤四:恢复数据库(恢复之前mongodb中的数据库,我恢复的是520byteBlog
数据库)
参考我的这篇文章吧:MongoDB 4.0.13 备份(mongodump)和恢复(mongorestore)指定数据库
步骤五:
- 本地连接方式1:使用终端进行连接
sudo mongo 149.129.100.132:27017
-
本地连接方式2:使用Navicat连接(可视化)
写的有问题的话,欢迎批评指正。