Linux安装MongoDB以及部署测试

引言

之前在Linux上安装MongoDB遇到了很多的坑,导致拉长了很大的时间周期,现在准备记录一下整个流程的笔记以及一些安装过程中遇到的坑

MongoDB的安装

在Linux中,安装MongoDB远比Windows上安装快很多,Windows版本的安装普遍因为系统问题会出现bug,而如果安装成功,后面的步骤我感觉会比linux轻松很多。那么linux总结的安装过程如下:

# 1. 安装3.0.1的MongoDB包
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.1.tgz

# 2. 解压安装包
tar -zxvf mongodb-linux-x86_64-3.0.1.tgz

# 3. 将其放入/usr/local/mongodb目录下
mv -r mongodb-linux-x86_64-3.0.1 /usr/local/mongodb

# 4. 创建数据库文件夹与日志文件
mkdir /usr/local/mongodb/data
touch /usr/local/mongodb/logs

# 5. 无权限启动MongoDB
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/localmongodb/logs --logappend --port=27017 --fork
# 有权限启动mongodb
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --auth --port=27017 --fork

这里需要注意MongoDB一定要选对版本,我安装过3次,因为版本的一些兼容或者熟悉程度,选用的是MongoDB3.0.1,然后中间安装过一个mongodb-linux-i686-3.0.2,同样可以用wget获取到,但之后当我们运行mongod的时候会有错误是:

mongod: error while loading shared libraries: libnetsnmpmibs.so.30: cannot open shared object file: No such file or directory

下张图片即为启动成功后显示的进程:
在这里插入图片描述
后来发现这个东西好像根本就不是Linux上的MongoDB版本,因为包内存还有很多文件都不全,所以果断rm -rf删除。删除后换了我上面写的mongodb包然后顺着流程能走到启动那里。

之后还有一个很大的问题就是如果不创建data文件夹,无权限启动的时候还是会报错为number 100,这个表示有锁,但新的mongodb刚下载完都还没有启动过怎么会有锁呢?原因就是启动的路径如果缺少文件就会报数字100,如果路径有错的话那么就是数字1。可以看下面这张图:
在这里插入图片描述
上述图片与更详细的解释可以看如下链接:
Mongodb中经常出现的错误(汇总)child process failed, exited with error number

MongoDB安装中的坑目前我遇到的就是这么多,所以到这里基本就安装成功了,下面将介绍怎么启动与部署。

MongoDB启动与部署

看我上面发的那张图,那样显示启动成功,因为有这个进程了,然后我来详细讲解一下启动的过程。首先我们先无权限启动,即:

./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork

启动起来之后我们ps看一下有没有当前进程,如果有的话那么就进入到bin目录下直接./mongo进入数据库:
在这里插入图片描述
这里因为我项目进程是项目数据库不是本地的,所以报错为不能默认的本地地址127.0.0.1:27017,所以这里我们需要启动时在后面加上./mongo IP:port,然后才能进入。

进入之后因为没有账户信息,所以需要我们创建一个MongoDB用户,创建命令如下:

# 先进入到管理员下
use admin

# 创建root用户
db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]})

# 验证用户
db.auth("root","123456")

上述命令为创建一个root权限用户,这里比较重要的是权限的设置,而关于权限,我下面列举了MongoDB基本的角色与权限介绍:

mongodb权限

内置角色 名称
数据库用户角色 read、readWrite;
数据库管理角色 dbAdmin、dbOwner、userAdmin;
集群管理角色 clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色 backup、restore;
所有数据库角色 readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色 root, 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色 __system

具体角色

read:允许用户读取指定数据库

readWrite:允许用户读写指定数据库

dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

root:只在admin数据库中可用。超级账号,超级权限

测试连接MongoDB

这里我用的是mongovue测试工具,直接输入当前我们在Linux中安装并启动的端口,和Navicat一样,在mongovue的可视化界面上新建一个连接,然后填入Linux中配的IP和端口,如果能测试ping通,那基本就没问题可以直连项目了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/submarineas/article/details/91881141
今日推荐