admin管理员组

文章数量:1566223

文章目录

    • 1 环境准备
    • 2 安装包下载
    • 3 安装启动
      • 3.1 配置
      • 3.2 启动
        • 3.2.1 命令行方式启动
        • 3.2.2 服务的方式启动
    • 5 用户角色和密码
      • 5.1 内置角色
      • 5.2 创建管理员账号
      • 5.3 用认证方式启动服务
      • 5.4 验证
      • 5.5 演示对单个数据库创建用户和密码
      • 5.6 可视化工具连接

MongoDB 系列文章

  • Linux CentOS7 环境下安装 MongoDB
  • Windows 环境下安装 MongoDB

1 环境准备


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

2 安装包下载


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

3 安装启动


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

3.1 配置

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

将 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

# 指定数据存储的位置和日志存储的位置
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 进行验证,出现如下提示则代表启动成功。

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

3.2.2 服务的方式启动

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

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

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

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

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

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

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"}]})
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"

5.4 验证

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

> use admin
switched to db admin
> db.auth("admin","123456")
1
> show 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)连接数据库。使用不同用户名和密码进行登录的时候,其可操作的数据库范围是不同的(角色设置原因)。

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

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

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

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

本文标签: 环境WindowsMongoDB