MongoDB 在 Windows 上的安装过程整体上来说并不难,网上的资料也比较多,这里我就不介绍了,我主要说下如何在Linux环境下安装 MongoDB。
环境:
CentOS 7
MongoDB 3.4.9
下载 MongoDB
首先去 MongoDB 官网下载 MongoDB ,地址 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.9.tgz 。将下载的文件放到 /opt 目录下。
解压
解压下载到的 tgz 文件,并给文件夹重命名为 mongodb,然后创建 db、logs 目录分别用来存放数据和日志。如下:
配置
进入到 bin 目录下,编辑 mongodb.conf 文件,内容如下:
1 | dbpath=/opt/mongodb/db |
执行结果如下:
测试
做完这一切之后,我们就可以启动 MongoDB 了,还是在 bin 目录下,执行 ./mongod -f mongodb.conf
命令表示启动 MongoDB ,然后执行 mongo
命令表示表示进入到 MongDB 的控制台,进入到控制台之后,我们输入 db.version()
命令,如果能显示出当前 MongoDB 的版本号,说明安装成功了。如下:
默认情况下,连接地址是 127.0.0.1:27017 ,连接的数据库是 test 数据库,我们也可以手动指定连接地址和连接的数据库:
1 | mongo 127.0.0.1:27017/admin |
此时连接成功之后,输入 db 命令,我们可以看到当前连接的数据库是 admin。
配置开机启动
我们也可以配置开机启动,编辑 /etc/rc.d/rc.local
文件,如下:
配置完成之后自行关机重启测试。
配置环境变量
每次都要进入到安装目录中去输入命令,麻烦,我们直接配置环境变量即可,编辑当前用户目录下的 .bash_profile
文件,如下:
关闭 MongoDB 服务
使用 db.shutdownServer(); 命令可以关闭到 MongoDB 服务,但是这个命令的执行要在 admin 数据库下,所以先切换到 admin,再关闭服务,完整运行过程如下:
安全管理
上面我们所做的所有的操作都没有涉及到用户,我们在用 Oracle、MySQL 或者 MSSQL 时都有用户名密码需要登录才可以操作,MongoDB 中当然也有,但是需要我们手动添加。在添加之前,我们先来说说 MongoDB 中用户管理的几个特点:
- MongoDB 中的账号是在某一个库里边进行设置的,我们在哪一个库里边进行设置,就要在哪一个库里边进行验证。
- 创建用户时,我们需要指定用户名、用户密码和用户角色,用户角色表示了该用户的权限。
OK,假设我给 admin 数据库创建一个用户,方式如下:
1 | use admin |
user 表示用户名,pwd 表示密码,role 表示角色,db 表示这个用户应用在哪个数据库上。用户的角色,有如下几种(参考资料):
角色名 | 备注 |
---|---|
Read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 |
root | 只在admin数据库中可用。超级账号,超级权限 |
用户创建成功之后,我们关闭掉当前MongoDB服务实例,然后重新启动新的实例,启动方式如下:
1 | mongod -f /opt/mongodb/bin/mongodb.conf --auth |
启动成功之后,如果我们直接执行如下命令,会提示没有权限:
1 | show dbs |
执行结果如下:
1 | "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }", |
此时我们需要先进入到 admin 数据库中,然后授权,操作如下:
1 | use admin |
auth 方法执行结果返回 1 表示认证成功。然后再去执行 show dbs 就可以看到预期结果了。此时我再在 sang 库下创建一个只读用户,如下:
1 | use sang |
创建成功之后,再按照上面的流程进入到 sang 库中,使用 readuser 用户进行认证,认证成功之后一切我们就可以在 sang 库中执行查询操作了,步骤如下:
1 | use sang |
做完这两步之后再执行查询操作就没有任何问题了,但是此时如果执行插入操作会提示没有权限,那我们可以创建一个有读写功能的用户执行相应的操作,这里就不再赘述。
好了,MongoDB 的安装我们就说这么多,有问题欢迎留言讨论。