mongodb分片认证

启动configsvr

1. 确保mongdb的configsvr是采用service模式启动的,即从/etc/init.d下的脚本启动的,其用户是mongod。

2. 确保mongod的配置文件完全相同。

3. 确保整个集群的所有keyFile文件内容相同。

启动mongos

1. 使用以下命令启动,以确保用户切换为mongod:

runuser -s /bin/bash mongod -c ‘/usr/bin/mongos --configdb confighost-01:27019,confighost-02:27019,confighost-03:27019 --port 27021 --keyFile /data/mongodb/key.d/mongod.key‘

2. 如果发生warning: config servers confighost-01:27019 and confighost-03:27019 differ

可以把configdb目录下的内容删除,然后再次运行configsvr服务。

3. 一切正常后,可以把mongos的启动配置写入脚本/etc/init.d/mongos

4. service mongos start

加入分片

请注意一定在未给admin数据库创建任何用户之前至少加入一个分片,否则可能会导致以后无法加入。

sh.addShard("rs-1/host-11.mycloud.com")

sh.addShard("rs-2/host-21.mycloud.com")

为admin用户创建第一个用户

该用户的角色必须是userAdminAnyDatabase

1.在mongos服务器本机登录

mongo --port xxxxx #xxxxx表示mongos的监听端口

use admin

show dbs  #这时可以列出数据库

db.createUser({user: "SysAdmin",pwd: "123",roles: [{role: "userAdminAnyDatabase", db:"admin"}]});

这时退出后再以mongo --port xxxxx登录执行show dbs就显示未授权了。

重新登录

可以选择在本机登录,也可以从其他机器登录。

本机登录:mongo localhost:27021/admin -u SysAdmin -p 123

其他机器登录:mongo mongos-server:xxxxx/admin -u SysAdmin -p 123

为test数据库创建用户

在mongos服务器上以管理员身份登录admin数据库:mongo localhost:27021/admin -u SysAdmin -p 123

为test数据库创建管理员用户:db.createUser({user: "yc-admin",pwd: "123",roles: [ { role: "userAdmin", db: "test" }]});

切换到test数据库:use test

以test管理员身份登录到数据库:db.auth("yc-admin", "123")

创建test的其他用户:

只读用户:db.createUser({user: "yc-read",pwd: "123",roles: [ { role: "read", db: "test" }]});

读写用户:db.createUser({user: "yc-write",pwd: "123",roles: [ { role: "readWrite", db: "test" }]});

添加其它分片

切换到admin数据库

use admin

为admin数据库增加userAdmin用户和root角色的用户(假设用户名是admin-root),见上一步。

clusterAdmin用户:db.createUser({user: "yc-cstadmin",pwd: "123",roles: [ { role: "clusterAdmin", db: "admin" }]});

切换到yc-cstadmin用户:db.auth("yc-cstadmin", "123")

添加rs-3分片:sh.addShard("rs-3/host-31.mycloud.com")

 

注意:

数据库不同的角色具有不同的权限:

read:只读

readWrite:读写

root:所有

userAdmin:用户管理

clusterAdmin:集群管理和监控

添加分片只能由admin数据库的root进行,其它用户都没有该权限。

时间: 2024-10-07 22:36:17

mongodb分片认证的相关文章

MongoDB 副本集+分片 认证方式搭建

MongoDB 副本集+分片 认证方式搭建 参考资料: https://www.cnblogs.com/ityouknow/p/7344005.htmlhttps://jorwen-fang.iteye.com/blog/2031756https://www.cnblogs.com/bjx2020/p/9350232.htmlhttps://www.jb51.net/article/161315.htmhttps://blog.51cto.com/beigai/1751381 环境规划: 服务器

Mongodb安全认证

Mongodb安全认证在单实例和副本集两种情况下不太一样,单实例相对简单,只要在启动时加上 --auth参数即可,但副本集则需要keyfile. 一.单实例 1.启动服务(先不要加auth参数) 2.登陆后切换到admin库并添加管理员账号 2.1  创建系统管理员用户 默认条件下,超级管理员只能用于帐号管理,不能进行其他数据库操作,可以通过自己给自己授权实现.生产环境中的管理员,如果某个帐号包含了角色userAdminAnyDatabase或者userAdmin,就应该仅仅用于帐号和角色管理,

MongoDB 分片的原理、搭建、应用 !

一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移).通过一个名为mongos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器).大部分使用场景都是解决磁盘空间的问题,对于写入有可能会变差(+++里面的说明+++),查询则尽量避免跨

MongoDB 分片集群实战

背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁盘,此种方法虽然成本很高,但是实现比较简单,维护起来也比较方便. 水平扩展:通过使用更多配置一般的服务器来共同承担工作负载,此种方法很灵活,可以根据工作负载的大小动态增减服务器的数量,但是实现比较复杂,得有专门的人员来运维. Databases for MongoDB 试用 IBM Cloud 上提

Mongodb分片配置服务器不同步导致mongos进程启动失败

生产环境中,使用的mongodb分片,由于突然断电,服务再起来的时候发现三个mongos进程中有一个启动失败,多次尝试仍不能启动.查看日志,内容如下: 大概意思是配置服务器configserver数据不同步. 解决办法: 杀死所有mongos进程 连接到每个分片的configserver,运行命令db.runCommand('dbhash') 找到MD5值,这时两个能正常运行的MD5值是一样的,不能正常运行的MD5和上面俩都不一样 删除不能正常运行的dbpath,将能正常运行的dbpath下的数

MongoDB分片实战

MongoDB分片实战(一):集群搭建 http://www.cnblogs.com/magialmoon/archive/2013/04/10/3013121.html MongoDB分片实战(二):Sharding http://www.cnblogs.com/zhanjindong/archive/2013/04/11/3015394.html MongoDB分片实战(三):性能和优化 http://www.cnblogs.com/zhanjindong/archive/2013/04/1

MongoDB分片存储的集群架构实现

MongoDB分片存储的集群架构实现 如果需要存储大量数据,或者系统的读写吞吐量很大的时候,单个server就很难满足需求了.这个时候我们可以使用MongoDB的分片机制来解决这些问题. 分片的基本概念 分片(sharding)是一种水平扩展(horizontal scaling)的方式,把一个大的数据集分散到多个片服务器上,所有的片服务器将组成一个逻辑上的数据库来存储这个大的数据集.分片对用户(应用层)是透明的,用户不会知道数据很被存放到哪个片服务器上. 这种方式有两个好处: 分片之后,每个片

mongodb分片部署

Mongodb 分片部署 配置mongodb集群,比如 在3个server上配置 3 shard的Mongodb集群: 架构: 1.每片数据需要3个mongod server,2个为主从数据节点:1个为仲裁节点(arbiter),不存数据. 一共三片,可以做成: 20.220-mongo1: 20001(sh1主),20002(sh2从),20003(sh3仲裁) 20.221-mongo2: 20002(sh2主),20003(sh3从),20001(sh1仲裁) 20.222-mongo3:

MongoDB分片之数据分割方式

随着移动互联网的发展,大量的非结构化数据随之产生,不仅对数据库存储大数据提出了新的要求,同时对于查询数据和进行大数据分析也提出了苛刻的要求,这些显然是单服务器处理能力无法满足的,自然建立一个集群是不可避免的.集群的复杂性大家众所周知,而MongoDB的优势之一正式可以帮助我们解决这些问题. 分片(sharding) 分片是MongoDB提供的一种机制,其可以将大型的集合分割保存到不同的服务器上.与其他的分区方案相比,MongoDB几乎能自动为我们完成所有事情.只要我们进行简单的配置,并告诉Mon