如何安装Mongodb?

2017-04-30

本文记录了在我的PC上安装Mongodb的过程,以备忘。
参考:菜鸟教程-Mongodb

1. 下载:Mongodb community 选择适合自己操作系统的版本。

2. 安装Mongodb:

  1. 安装Mongodb的安装文件,可以选择complete默认安装,也可选择custom自己指定安装的路径和功能。
  2. 创建数据目录:我要把数据库的数据目录放在D:盘

    1
    2
    3
    4
    > d:
    > cd \your-path-to\Mongodb
    > mkdir db # 新建一个db文件夹
    > mkdir log # 新建一个log文件夹
  3. 添加环境变量:在Path环境变量中添加Mongodb安装好的bin路径,就能从命令行直接启动Mongodb而无需切换到安装目录下了。

  4. 设置安全认证登陆:
    Mongodb默认没有密码,但是为了保证数据的安全性,我们给数据库开启安全性认证。大致流程是这样的:
    • 以无认证方式启动mongodb server
    • client连接上去,创建一个usr-admin(管理用户的用户)
    • 以认证方式启动mongodb server
    • client以usr-admin身份登陆,再创建一个普通用户amy(只对test数据库有操作权限)
    • 使用amy登陆,向test数据库中插入数据。
  5. 创建用户:
    以管理员权限打开cmd。

    1
    2
    3
    4
    > mongod --dbpath "\your-path-to\Mongodb\db" --logpath
    "\your-path-to\Mongodb\log\Mongodb.log"
    # 以不认证方式启动Mongodb服务,log写在log文件夹下的Mogodb.log文件里,这样控制台窗
    # 口就不会输出一大堆信息,整个世界都清静了。

    创建用户:
    设置了认证,需要有用户才可以登陆。我们这一步创建两个用户:usr-admin和amy。
    usr-admin是管理员,amy是普通用户。
    5.1 创建usr-admin用户:
    打开一个新的cmd窗口:

    1
    2
    # 启动一个client,会连接上刚才启动的server服务。
    > mongo

    连接成功!
    Mongodb 3.0以后把addUser()函数改成了createUser()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    > use admin
    > db.createUser({
    user:"usr-admin",
    pwd:"password",
    roles: [{
    role:"userAdminAnyDatabase",
    db: "admin"
    }]
    })

    role(角色)就是权限的集合。在这里,我们赋予了usr-admin用户对于admin数据库 “userAdminAnyDatabase”的权限。
    5.2 创建普通用户:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 以认证方式启动mongdb server:
    > mongod --dbpath "D:\0-softwares\coding\Mongodb\db" --logpath "D:\0-softwares\coding\Mongodb\log\Mongodb.log" --auth
    # 新开一个cmd启动client
    > use admin # 切换到admin数据库下
    > db.auth('usr-admin','password') # 以usr-admin身份登陆
    # 从test数据库创建用户amy
    > use test
    > db.createUser({
    user:"amy",
    pwd:"password",
    roles: [
    {role:"readWrite",db: "test"},
    {role:"dbOwner",db:"test"}
    ]
    })
    > show users
    > db.auth('amy','password')
    > db.test.insert({'hello':'amy'})
    > db.tets.find()

3. 总结:

  • 建议使用认证登陆,这样能够保证数据库的安全;
  • 用户登陆应当从创建该用户的数据库开始:use the-database;
  • usr-admin用户可以创建其他用户;
  • 可以删除用户:db.dropUser(‘usrname’)
  • 删除数据库:
    1
    2
    > use dbname
    > db.dropDatabase()