1.确保集群搭建完成,状态正常
2.增加安全认证机制KeyFile
1)集群之间的安全认证
集群之间的复制增加keyFile认证
mkdir /home/mongodb/data/keyfile openssl rand -base64 745 > /home/mongodb/data/keyfile/mongodb-keyfile chmod 600 /home/mongodb/data/keyfile/mongodb-keyfile
将该key放到集群中机器的每一台上,记住必须保持一致,权限设置成600;
2)修改配置文件
vim mongodb/mongod.conf security: authorization: enabled keyFile: "/home/mongodb/data/keyfile/mongodb-keyfile" clusterAuthMode: "keyFile"
##注意缩进
3)主库配置用户
也可后面配置,开启keyfile认证就默认开启了auth认证了,为了保证后面可以登录,我提前创建了用户:
先创建管理员账户 db.createUser( { user:"admin", pwd:"123456", roles:[{role:"userAdminAnyDatabase",db:"admin"}] } ); db.createUser( { user: "root", pwd: "123456", roles: [ { role: "root", db: "admin" } ] }); #认证用户 db.auth("admin","123456") db.auth("root","123456")
4)重启MongoDB并进入
重新启动mongodb,记住重新启动时候,keyfile的指定如果没有在配置文件中配置,就必须启动时候使用参数keyfile指定,关闭顺序注意下,mongodb集群有自动切换主库功能,如果先关主库,主库就切换到其它上面去了,这里预防主库变更,从库关闭后再关闭主库。
登录MongoDB进行测试: ./mongodb/bin/mongo 192.168.254.110:27017 -u root -p 123456 查看下集群的状态是否正常: rs.status()
3.创建用户和用户数据库
1)启动认证
开启了安全认证就可以开始对每个数据库进行安全认证了,首先给用户创建一个数据库:
test_set:PRIMARY> use wisdom_doc
switched to db wisdom_doc
##mongodb创建数据库直接use即可,此时show dbs是看不到该库的,需要插入一条数据才会现实出来,这里不演示;
2)创建用户数据库的用户:
db.createUser( { user: "rongda", pwd: "a1234456", roles: [ { role: "readWrite", db: "wisdom_doc" } ] } );
##创建完成会显示成功,可以用show users;查看所有用户验证用户是否存在;
##关于用户可以赋予的权限,请看
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
3) 验证用户登录
./mongodb/bin/mongo 192.168.254.110:27017/wisdom_doc -u rongda -p a1234456
进入到MongoDB数据库后,可以查看该库下的所有集合
show collections;