承灿 2023/5/4
MongoDB测试代码 (opens new window)
# 1. 单机部署
操作系统:macOS 10.14
其它系统,基本一致的。
1、下载:
打开 MongoDB 下载页面 (opens new window),选择对应的 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
- 每个配置项的解释,直接看 《mongodb.conf 配置文件详解》 (opens new window) 文章。
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 开启权限验证及设置用户名密码》 (opens new window)
内建的角色
- 数据库用户角色 :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 为主,个人版免费。