说明:
MongoDB副本集就是shard,所以配置是一样的,如果只是单机的MongoDB,连keyfile文件都不需要,只需要配置auth=true即可。所以好好看一下下面的例子,你应该就可以明白MongoDB应该如何设置密码验证了!
MongoDB分片集群设置密码验证
创建keyfile秘钥文件
#MongoDB集群中的每一个实例彼此连接时都会检验彼此证书是否相同,只有相同的实例彼此才可以访问。
openssl rand -base64 512 > mongodb.key
chmod 400 mongodb.key
将密码复制到集群的每台设备的指定位置
就假如我们的指定位置是/usr/local/mongodb/下
scp mongodb.key root@IP地址:/usr/local/mongodb/
连接任意一台mongos创建用户
./mongo IP地址:[mongos端口]
> use admin > db.createUser({ //集群管理账号 "user":"admin", "pwd":"admin888", "roles":[{ role:"root", db:"admin" ]} }) > use testdb //客户端账号 > db.createUser({ "user":"user", "pwd":"user888", "roles":[{ role:"dbOwner", db:"testdb" ]} })
MongoDB用户角色问题可以参考我之前写的MongoDB用户和角色说明。
配置密码认证
config Server的配置文件
#新增下列两项
keyFile=/usr/local/mongodb/mongodb.key auth=true
修改完成后,重启config Server,先重启secondary,最后再重启primary。
shard同config Server一样。
mongos则是没有auth这个选项,只需要配置keyFile验证即可。
全部重启完成后,验证
#连接任意一台mongos
./mongo IP地址:[mongos端口]
> use admin > db.auth("admin","admin888") //不登录是无法操作MongoDB的
至此,MongoDB的密码认证就配置完成了!