昨天(周六)终于给捅咕上了(

0x00.前言

还记得上篇文章中所说

MongoDB 4.4.0 移除了 2012 R2 的支持,不得不去升级了云主机系统

其实本来准备用到停止支持,毕竟2012 R2用习惯了还是很舒服的,而且新版的系统bug实在是太多了,就拿远程桌面举例经常「出现了内部错误」

草

0x01.授权认证

配置文件开启了rs副本集配置,但是可以不使用即远程连接的时候也只指定一个云主机
先在服务端配置用户名、密码,再映射到外网0.0.0.0并开启认证

1
2
3
4
5
6
7
8
use admin
db.createUser(
{
user: "<user>",
pwd: "<pwd>",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

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

之后的命令行认证方法:

1
2
use admin
db.auth(<user>, <pwd>)

由于是重装了系统,因此需要重新配置文件夹的权限(不要说Windows下没有Linux的文件夹权限

0x02.升级姿势

举个栗子,从4.2升级至4.4,需要在旧版本中运行
查询:db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
返回:{ featureCompatibilityVersion: { version: '4.2' }, ok: 1 }
设定:db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
返回:{ ok: 1 }
查询:db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
返回:{ featureCompatibilityVersion: { version: '4.4' }, ok: 1 }

0x03.引用

MongoDB设置用户名和密码
创建mongodb副本集操作实例