Better

Ethan的博客,欢迎访问交流

MongoDB安装

主要记录MongoDB在Mac和Linux环境下安装与基本配置

Mac安装

安装:通过brew快捷安装

配置:brew方式安装,配置文件路径为/usr/local/etc/mongod.conf

# 常用可设置内容如下:
port=27017  
dbpath=/usr/local/mongodb/data/  
logpath=/usr/local/mongodb/log/mongodb.log
# 设置为后台启动
fork = true

启动:mongod --config /usr/local/etc/mongod.conf

后台启动:mongod --fork --config /usr/local/etc/mongod.conf 如果报错,一般情况下是权限问题,使用sudo方式解决,如果配置文件中设置了fork,则可以省略--fork。

关闭mongo:输入mongo后,输入 use admin,然后输入 db.shutdownServer()

Linux安装

通过wget或者curl下载

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz

解压

tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
# 按照FHS规范,移动到usr/local
mv  mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb

配置:export PATH=/bin:$PATH

启动:./bin/mongod --port port --dbpath data/db --logpath logs/mongodb.log,这里演示通过命令行启动,但是这样太复杂,建议通过配置文件的方式启动。

后台启动:sudo ./bin/mongod --fork --port port --dbpath data/db --logpath logs/mongodb.log

删除进程:killall -15 name(eg:killall -15 mongod)

设置用户名和密码

启动方式添加--auth参数,从上面Mac和Linux的启动方式就可以看出来Mongodb有两种启动方式

  • 直接在命令后配置参数
  • 写成配置文件,然后使用--config读取配置启动
  • 强烈建议写成配置文件,首先自己设置的参数不会忘记,同时启动命令更加友好。

后台连接数据库:./bin/mongo ip:port

查看所有数据库:show dbs

  • admin
  • local
  • 用户创建的

use databasename:该命令将创建一个新的数据库(如果它不存在),否则将返回现有的数据库

添加用户

  • mongodb可以为每个数据库都建立权限认证,也就是你可以指定某个用户可以登录到哪个数据库。
  • 在mongodb中admin数据库是一个特别的数据库,这个数据库的用户,可以访问mongodb中的所有数据库。
  • 新增用户是需要权限的,最开始没有用户的时候,只能采取不认证的方式添加用户。如果有用户,并且权限足够的话,则需要认证才有权限执行操作。
    // 认证
    db.auth("coderhuang","123456");
    //新建
    db.createUser( 
      { 
          user: "accountAdmin01",
          pwd: "changeMe",
          customData: { employeeId: 12345 },
          roles: [ 
              { role: "clusterAdmin", db: "admin" },
              { role: "readAnyDatabase", db: "admin" },
              "readWrite"
          ] 
      },
      { w: "majority" , wtimeout: 5000 } )
    
    查看所有用户:show users

system.user用户

  • 每个数据库的用户账号都是以文档形式存储在system.users集合里面的,
  • 查询某个数据库下的用户db.system.users.find();
  • 删除某个数据库下的所有用户db.system.users.remove()
  • 删除指定用户db.system.users.remove({'user':'用户名'})


留言