暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

本机部署一个MongoDB单节点服务器,并启用auth验证、开启oplog

2365

目的

本机部署一个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

  1. 接下来创建超级用户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数据库中可用。超级账号,超级权限(本次创建的就是超级账号)
  1. 加上--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()。

  1. 以副本集方式启动实例:

启动命令中,增加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'

复制
  1. 在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 在看” 你最好看!

喜欢,就关注我吧!


👇👇👇谢谢各位老板!!!

文章转载自PostgreSQL运维技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论