目的
本机部署一个MongoDB单节点服务器,并启用auth验证、开启oplog,用于日常测试。
版本:4.0.9
本机系统:MacOs
安装
1、使用curl命令安装。
# 进入 /usr/local
cd /usr/local
# 下载
sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-4.0.9.tgz
# 解压
sudo tar -zxvf mongodb-osx-ssl-x86_64-4.0.9.tgz
# 重命名为 mongodb 目录
sudo mv mongodb-osx-x86_64-4.0.9/ mongodb复制
2、把 MongoDB的二进制命令文件目录(安装目录/bin)添加到 PATH 路径中:
export PATH=/usr/local/mongodb/bin:$PATH
复制
3、创建日志及数据存放的目录:
数据存放路径:
sudo mkdir -p /usr/local/var/mongodb
复制
日志文件路径:
sudo mkdir -p /usr/local/var/log/mongodb
复制
授予当前用户对这两个目录的读写权限:
sudo chown username /usr/local/var/mongodb
sudo chown username /usr/local/var/log/mongodb复制
4、后台启动 mongodb:
mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork
复制
5、查看 mongod 服务是否启动:
ps aux | grep -v grep | grep mongod
复制
6、启动后我们可以使用 mongo 命令打开一个终端:
$ cd /usr/local/mongodb/bin
$ ./mongo
MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb复制
启用auth,使用密码登录
启动mongod服务后,使用客户端登陆,首次登陆不需要密码。
./mongo
接下来创建超级用户root,密码是root:
db.createUser({user:"root",pwd:"root",roles:[{"role":"userAdmin","db":"admin"},{"role":"root","db":"admin"},{"role":"userAdminAnyDatabase","db":"admin"}]})
复制
MongoDB中built-in角色如下:其中built-role有如下:
Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 root:只在admin数据库中可用。超级账号,超级权限(本次创建的就是超级账号)
加上--auth参数,重启mongo。--auth参数用来控制用户对数据库资源和操作的访问。启用授权后,MongoDB要求所有客户端首先进行身份验证,以确定客户端的访问权限。
mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork --auth
复制
3.使用账户和密码登录。
mongo -u root -p root localhost:27017/admin
或者
mongo "mongodb://root:root@localhost:27019/admin"复制
单节点开启Oplog
MongoDB的副本集架构中有一个数据结构oplog,里面存储了节点所有变更操作。但是单实例没有这个结构,那么单台MongoDB实例怎么开启oplog?
方法:
需要以副本集方式启动实例,并在local数据库或admin数据库执行初始化副本集的脚本,rs.initiate()。
以副本集方式启动实例:
启动命令中,增加replSet='replset_name' 示例:
./mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork --auth --bind_ip 0.0.0.0 --replSet='test'
复制
在local数据库或admin数据库执行初始化副本集的脚本。
语法:
rs.initiate({ _id: "replset_name", members: [{_id:0,host:"ServerIP:MongoDBPort"}]})
示例:
rs.initiate({ _id: "test", members: [{_id:0,host:"localhost:27017"}]})
复制
注:初始化完成之后,副本集中唯一的节点,可能短时间显示为SECONDARY或OTHER。一般而言,稍等一会,就会自然恢复为primary,无需人工干预。
总结
我们可以使用curl安装MongoDB单节点服务器,开启密码验证,需要打开--auth参数。如果想要开启oplog,则需要以副本集方式启动实例,并在local数据库或admin数据库执行初始化副本集的脚本,rs.initiate()。
点个“赞 or 在看” 你最好看!
👇👇👇谢谢各位老板!!!