文章目录




MongoDB 系列文章

1 环境准备



  • 操作系统:Windows 10
  • 安装包:mongodb-win32-x86_64-2012plus-4.2.14.zip

2 安装包下载


官网下载地址:​​https://www.mongodb.com/try/download/community​

Windows 环境下安装 MongoDB_windows

3 安装启动


安装包有2种类型,一种是 zip 类型,一种是 msi 类型。其实两种都是一样的,前者是直接解压即可,后者是需要一步一步安装。推荐使用 zip 类型的安装包。

3.1 配置

在安装目录下创建 data 文件夹,并在 data 文件夹下再创建 db 文件夹和 log文件夹。db 文件夹用于存储数据库数据,log 文件夹用于存储数据库日志。

Windows 环境下安装 MongoDB_mongodb_02

将 Mongo 安装目录的 bin 路径添加到环境变量 path 中。这样以后执行一些 mongo 相关的命令可以不用进入到安装路径的 bin 目录。

3.2 启动

有两种启动方式,命令行的方式启动和服务的方式启动。

3.2.1 命令行方式启动

可以通过 cmd 打开命令窗口,手动输入启动命令。当然,也可以创建一个启动脚本文件(例如 ​​startMongo.bat​​),内容为启动命令,这样每次只需要双击脚本文件即可启动 mongo 服务。

# --dbpath指定了数据存储的位置
mongod --dbpath E:\chDevTools\MongoDB\Server\3.2\data\db

Windows 环境下安装 MongoDB_面试_03

# 指定数据存储的位置和日志存储的位置
mongod --dbpath E:\chDevTools\MongoDB\Server\3.2\data\db --logpath E:\chDevTools\MongoDB\Server\3.2\data\log\mongo.log

在浏览器输入 ​​127.0.0.1:27017​​ 进行验证,出现如下提示则代表启动成功。

Windows 环境下安装 MongoDB_命令行_04

或者在命令行执行 mongo 命令,进行验证。

Windows 环境下安装 MongoDB_mongodb_05

3.2.2 服务的方式启动

在 Mongo 安装的目录下创建文件 ​​mongod.config​​ ,指定数据存储的位置,和日志存储的位置,文件内容如下:

Windows 环境下安装 MongoDB_mongodb_06

Windows 环境下安装 MongoDB_mongodb_07

在命令行窗口输入以下命令,使用–install 选项将 MongoDB 添加为 Windows 的服务。

mongod --config “E:\chDevTools\MongoDB\Server\3.2\mongod.config” --install -serviceName "MongoDB"

按住 ​​Win 键和 R 键​​​,输入​​services.msc​​​,打开 Windows 服务列表,可以看到 MongoDB 服务已经添加成功,但是此时 MongoDB 服务还未启动(​​当然也可以在此右键手动启动和停止​​)。

Windows 环境下安装 MongoDB_mongodb_08

Windows 环境下安装 MongoDB_mongodb_09

在命令行输入 ​​net start MongoDB​​ 启动服务。启动后在服务列表可以看到启动状态。

Windows 环境下安装 MongoDB_数据库_10

Windows 环境下安装 MongoDB_mongodb_11

顺带介绍下停止服务 ​​net stop MongoDB​​​ 和删除服务 ​​sc delete MongoDB​​ 的命令。

Windows 环境下安装 MongoDB_windows_12

Windows 环境下安装 MongoDB_数据库_13

5 用户角色和密码


启动 MongoDB 服务默认是没有账号密码的,即连接上即可进行各种操作。我们可以使用 --auth 参数开启认证,这样连接需要认证之后才能执行操作。默认情况下,MongoDB 是没有管理员账户的,所以我们需要在 ​​admin 数据库​​中使用 ​​db.createUser()​​ 命令添加管理员帐号或其他角色。

5.1 内置角色


  1. 数据库用户角色:read、readWrite
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  4. 备份恢复角色:backup、restore
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
  7. 内部角色:__system

5.2 创建管理员账号

切换到 admin 数据库,使用以下命令创建管理账号,拥有操作所有数据库权限。

> use admin
switched to db admin
> db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
>

5.3 用认证方式启动服务

停止服务(​​net stop 服务名​​​),将之前的服务删除(​​sc delete 服务名​​​),原有的 data\db 目录下的数据库数据可以不用删除。然后再添加 ​​--auth​​ 参数重新添加服务,最后重新启动服务。

mongod --config “E:\chDevTools\MongoDB\Server\3.2\mongod.config” --auth --install -serviceName "MongoDB"

Windows 环境下安装 MongoDB_面试_14

5.4 验证

使用 mongo 命令连接上之后,如果不进行 ​​db.auth("用户名","密码")​​ 进行用户验证的话,是执行不了任务命令的,只有通过认证才可以。注意,每一个用户都需要在创建这个用户的认证库下进行认证。

> use adminuse admin
switched to db admin
> db.auth("admin","123456")
1
> show tablesshow tables
system.users
system.version
>

5.5 演示对单个数据库创建用户和密码

平常开发中,一般新项目会创建新的数据库,而且创建一个新的数据库用户仅对此数据库进行读写。

以下演示创建 chenpi 用户,密码为123456,并设置对 nobody 数据库读写的权限。注意,创建新用户前,先使用 admin 用户登录,因为我们刚才为 admin 用户设置了 userAdminAnyDatabase 权限。

# 先使用有创建用户权限的用户登录
> use admin
switched to db admin
> db.auth("admin","123456")
1
# 新用户的认证库
> use nobody
switched to db nobody
# 创建chenpi用户,密码123465,对nobody数据库有读写权限
> db.createUser({user:'chenpi',pwd:'123456',roles:[{role:'readWrite',db:'nobody'}]})
Successfully added user: {
"user" : "chenpi",
"roles" : [
{
"role" : "readWrite",
"db" : "nobody"
}
]
}
>

5.6 可视化工具连接

我们使用 MongoDB 可视化工具(例如 ​​Studio 3T For MongoDB​​)连接数据库。使用不同用户名和密码进行登录的时候,其可操作的数据库范围是不同的(角色设置原因)。

注意,当连接的数据库启动没有设置用户认证时,连接时不需要填写用户名和密码。

Windows 环境下安装 MongoDB_命令行_15

Windows 环境下安装 MongoDB_命令行_16

我们使用 chenpi 用户登录,因为我们设置它的角色是只对 nobody 数据库有读写权限,所以连接后只能看到 nobody 数据库。

Windows 环境下安装 MongoDB_windows_17

当然,如果我们使用 admin 用户登录,注意,admin 用户当时是在 admin 数据库创建的,所以它的认证库是在 admin。

Windows 环境下安装 MongoDB_mongodb_18

你会发现 admin 用户可操作的数据库范围和 chenpi 用户是不一样的。

Windows 环境下安装 MongoDB_命令行_19