用命令行安装mongodb指南

在用 scoop 安装 mongodb 后,没有像直接使用安装包那样,会将数据库服务一次安装到位,而是需要使用命令行来进行安装。

网上虽然有很多的教程,但是参差不齐,每次想找到一个能使用,还是会浪费一些时间,于是根据自己的需要,进行了总结。

小提示

不知从什么版本开始,用 scoop 安装的 mongodb 没有安装导入导出这些工具了,如果有需要,可以单独安装:scoop install mongodb-database-tools

初始配置

我的 mongodb 是安装在 E:\scoop\apps\mongodb\current\bin 位置

  • 打开 E:\scoop\apps\mongodb\current\bin\mongod.cfg 文件,配置相关参数。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # Where and how to store data.
    storage
    dbPath: D:\Applications\Scoop\apps\mongodb\4.2.7\data
    journal:
    enabled: true
    # engine:
    # mmapv1:
    # wiredTiger:

    # where to write logging data.
    systemLog:
    destination: file
    logAppend: true
    path: D:\Applications\Scoop\apps\mongodb\4.2.7\log\mongod.log

    # network interfaces
    net:
    port: 27017
    bindIp: 127.0.0.1

    dbPath 设置数据保存的路径

    systemLog:path 设置日志的保存路径

  • 以管理员身份打开 cmd 窗口。

    输入 cd E:\scoop\apps\mongodb\current\bin 进入到 scoop 目录 E:\scoop\apps\mongodb\current\bin

  • 在命令行中输入下面的命令安装 mogodb

    1
    mongod --config "E:\scoop\apps\mongodb\current\bin\mongod.cfg" --install

    可以使用 --serviceName--serviceDisplayName 指定服务名,从而可以安装多个 mogodb 实例

  • 启动 mongodb 服务

    net start mongodb

设置用户名和密码

设置超级管理员

  • 在命令行中输入 mongo 进入mongodb的交互界面

  • 在 admin 库中添加 admin 角色

    1
    2
    3
    4
    5
    6
    7
    8
    9
    use admin  
    db.createUser({
    user: 'admin', // 用户名
    pwd: '123456', // 密码
    roles:[{
    role: 'root', // 角色
    db: 'admin' // 数据库
    }]
    })

    设置完成,可以输入 show users 查看是否设置成功。

  • 开启验证

    找到 MongoDB 安装目录,打开 mongod.cfg文件,找到以下这句:

    1
    #security:

    改为

    1
    2
    security:
    authorization: enabled
  • 重启 mongodb

    在cmd窗口中

    1
    2
    net stop mongodb
    net start mongodb

    也可以在任务管理器中找到相应的服务,然后重新启动

  • 登陆数据库

    1
    2
    3
    4
    5
    6
    7
    // 方式一
    mongo
    use admin
    db.auth('admin', '123456')

    // 方式二
    mongo admin -u admin -p 123456

    这时候我们就可以正常访问和操作数据了。

添加数据库用户

我们除了可以设置数据库的超级管理员以外,还可以给每个数据库设置单独的管理员。其只有操作单独数据的一定权限。

1
2
3
4
5
6
7
8
9
use test  // 跳转到需要添加用户的数据库
db.createUser({
user: 'fooadmin', // 用户名
pwd: '123456', // 密码
roles:[{
role: 'readWrite', // 角色
db: 'test' // 数据库名
}]
})

常用命令

1
2
3
4
5
6
7
show users  // 查看当前库下的用户

db.dropUser('testadmin') // 删除用户

db.updateUser('admin', {pwd: '654321'}) // 修改用户密码

db.auth('admin', '654321') // 密码认证

MongoDB 数据库默认角色

分类 role(角色) 简要说明
数据库用户角色(DB User Roles) read readWrite 为某个数据库创建一个用户, 分配该数据库的读写权力
数据库管理员角色(DB Admin Roles) dbAdmin dbOwner userAdmin 拥有创建数据库, 和创建用户的权力
集群管理角色(Culster Administration Roles) clusterAdmin clusterManager clusterMonitor hostManager 管理员组, 针对整个系统进行管理
备份还原角色(Backup and Restoration Roles) backup restore 备份数据库, 还原数据库
所有数据库角色(All-Database Roles) readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase dbAdminAnyDatabase 拥有对admin操作的权限
Superuser Roles(超级管理员) root dbOwner userAdmin userAdminAnyDatabase这几个角色角色提供了任何数据任何用户的任何权限的能力,拥有这个角色的用户可以在任何数据库上定义它们自己的权限