扫码关注公众号:芋道源码

发送: 百事可乐
获取永久解锁本站全部文章的链接

《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://www.iocoder.cn/MongoDB/install/ 「芋道源码」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

1. 单机部署

操作系统:macOS 10.14

其它系统,基本一致的。

1、下载

打开 MongoDB 下载页面,选择对应的 Version、OS、Package ,获得下载地址。这里,我们选择如下:

  • Version :4.2.1(current release)
  • OS :macOS x64
  • Package :TGZ

获得到下载地址为:https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-4.2.1.tgz

打开 Terminal 终端,进行下载。

# 创建目录
$ mkdir -p /Users/yunai/MongoDB
$ cd /Users/yunai/MongoDB

# 下载
$ wget https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-4.2.1.tgz
  • MongoDB 安装包大概有 100m 多,所以下载可能比较久。此时,可以考虑上迅雷,哈哈哈。

2、解压:

# 解压
$ tar -zxvf mongodb-macos-x86_64-4.2.1.tgz

# 进入
$ cd mongodb-macos-x86_64-4.2.1

3、编辑配置:

# 创建 data、log 目录
$ mkdir data
$ mkdir log

# 编辑配置文件
$ vi mongodb.conf

配置文件如下:

dbpath=/Users/yunai/MongoDB/mongodb-macos-x86_64-4.2.1/data
logpath=/Users/yunai/MongoDB/mongodb-macos-x86_64-4.2.1/log/master.log
fork=true
maxConns=4000
logappend=true

4、启动:

$ bin/mongod -f mongodb.conf

5、测试:

$ bin/mongo
  • 进入 MongoDB shell 成功,说明 MongoDB 启动成功了。

2. 安全认证

注意!!!一定要给 MongoDB 初始化管理员账号,并开启 MongoDB 的安全认证

不同于 MySQL 的账号密码管理,MongoDB 的账号密码是基于特定数据库的,而不是整个 MongoDB 系统。也就是说,创建的每个账号密码,只能访问操作一个数据库。

1、创建管理员账号:

# 连接 MongoDB
$ bin/mongo

# 切换到 admin 库
> use admin;

# 创建管理员账号
> db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
  • user :账号。
  • pwd :密码。
  • role :角色。
  • db :所属数据库。

在 MongoDB 中,用户是基于角色(role)授权。内置角色如下:

FROM 《MongoDB 开启权限验证及设置用户名密码》

内建的角色

  • 数据库用户角色 :read、readWrite
  • 数据库管理角色 :dbAdmin、dbOwner、userAdmin
  • 集群管理角色 :clusterAdmin、clusterManager、clusterMonitor、hostManager
  • 备份恢复角色 :backup、restore
  • 所有数据库角色 :readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • 超级用户角色 :root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner、userAdmin、userAdminAnyDatabase)

角色说明:

  • read :允许用户读取指定数据库
  • readWrite :允许用户读写指定数据库
  • dbAdmin :允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问 system.profile
  • userAdmin :允许用户向 system.users 集合写入,可以找指定数据库里创建、删除和管理用户
  • clusterAdmin :只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
  • readAnyDatabase :只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase :只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase :只在admin数据库中可用,赋予用户所有数据库的 userAdmin 权限
  • dbAdminAnyDatabase :只在admin数据库中可用,赋予用户所有数据库的 dbAdmin 权限
  • root :只在 admin 数据库中可用。超级账号,超级权限

2、开启安全认证

编辑 mongodb.conf 配置文件,增加 auth=true 配置项。

3、重启

# 查找 MongoDB 进程,并关闭它
$ ps -ef | grep mongodb
$ kill 2382 # 假设我们找到的 MongoDB 进程号为 2382 。

# 启动 MongoDB 进程
$ bin/mongod -f mongodb.conf

4、认证

# 连接 MongoDB
$ bin/mongo

# 切换到 admin 库
> use admin;

# 查看 collection 列表,此时会报错
> show collections;
Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus

# 认证
> db.auth('useradmin', 'adminpassword');

# 查看 collection 列表,此时正常
> show collections;

3. 创建数据库

本小节,我们来创建一个数据库,并创建对应的账号密码。

1、创建数据库

# 连接 MongoDB
$ bin/mongo

# 切换到 admin 库
> use admin;

# 管理员认证
> db.auth('useradmin', 'adminpassword');

# 创建数据库
> use yourdatabase;
  • use DATABASE_NAME 指令:如果数据库不存在,则创建数据库,否则切换到指定数据库。

2、创建账号密码

继续上面的 MongoDB Shell 。

# 创建 yourdatabase 的管理员的账号密码
> db.createUser({ user: "test01", pwd: "password01", roles: [{ role: "dbOwner", db:"yourdatabase" }] })

# 创建 yourdatabase 的开发者的账号密码
db.createUser({ user: "test01", pwd: "test02", roles: [{ role: "readWrite",db: "yourdatabase" }] })
  • 对于每个数据库的管理员账号,我们赋予 "dbOwner" 角色,允许读写、索引等操作。
  • 对于每个数据库的开发者账号,我们赋予 "readWrite" 角色,只允许读写操作。

4. 图形化客户端

目前,MongoDB 的图形化客户端已经很多了,例如说:

艿艿自己的话,使用 Studio 3T 为主,个人版免费。

文章目录
  1. 1. 1. 单机部署
  2. 2. 2. 安全认证
  3. 3. 3. 创建数据库
  4. 4. 4. 图形化客户端