mongodb

1. 安装 mongodb
  我这里使用 homebrew 安装,brew install mongodb
  其它 OS 上的安装请参考:https://docs.mongodb.org/manual/installation/

2. 启动
  mongod db 的数据文件默认保存在 /data/db 目录 (如果该目录不存在,启动会报错),默认监听的端口是 27017,默认不启动安全认证机制  

  启动参数:

      --dbpath 指定数据文件保存路径
  --port 指定监听端口
  --fork 在后台开启 Mongdb 服务
  --logpath /var/log/mongodb.log 指定日志输出目录
  --logappend 以追加的方式创建日志防止把之前的日志删除了

  这里的启动指定了数据保存路径和端口
  mongod --dbpath /Users/fengzp/Documents/develop/java-tools/mongodb/mongodb-data --port 12345 --fork --logpath /Users/fengzp/Documents/develop/java-tools/mongodb/mongodb-log/mongodb.log --logappend

3. 连接
  mongo -port 12345
  如果是监听默认端口 27017,就不用加上 -port 12345

4. 安全认证和创建用户
  不带 --auth 的启动方式是很可怕的,没有任何安全控制,一般只限于开发环境。生产环境肯定要开启安全认证,mongodb 在安全认证的主要思路是:
先在某个库上创建用户 (db.createUser) -> 将该用户授权 (db.auth) -> mongod 启动时指定 --auth 选项 -> mongo 客户端连接时指定用户名、密码、认证 db(或者连接时先不指定用户名、密码,连接上以后,再用 db.auth 切换到认证用户身份)

  4.1 创建数据库
    use demo
    use 后加数据库名称即可,如果数据库不存在,会自动创建

  4.2 创建用户
    db.createUser({ "user" : "admin", "pwd": "123456", "roles" : [ "readWrite","dbAdmin","userAdmin"]})
    这样就创建了一个名为 admin 的管理员,而且具备读写、db 管理、用户管理权限。mongo 默认的 roles 角色,可参考:https://docs.mongodb.org/manual/reference/built-in-roles/#built-in-roles

  4.3 用户授权
    db.auth({user: "admin", pwd: "123456"})

  4.4 启动安全认证
    mongod --auth

  4.5 指定安全信息的连接
    mongo localhost:12345/demo -u admin -p 123456 --authenticationDatabase demo

5. 关闭服务

前台运行:

  没有使用 --fork,直接可以前台退出终端关闭。通过这种方式,Mongodb 将会自己做清理退出,把没有写好的数据写完成,并最终关闭数据文件。要注意的是这过程会持续到所有操作都完成。

后台运行:

  如果使用 --fork 在后台运行 mongdb 服务,使用 db.shutdownServer() 命令来关闭。