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() 命令来关闭。