Mongodb主从复制开启安全认证

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

2.1.1部署mongodb主从实例:

Mongodb-master实例

环境:mongodb-master 配置文件先注释掉验证参数:#auth = true

启动mongodb-master 然后设置admin库登陆账户和密码:

[root@localhost logs]# mongo127.0.0.1:27017

MongoDB shell version: 3.0.5

connecting to: 127.0.0.1:27017/test

> use admin;

switched to db admin

> db.createUser( 

...   { 

...     user:"root", 

...     pwd:"Zytest6699", 

...    roles: [ { role: "root", db: "admin" } ] 

...   } 

... ) 

Successfully added user: {

         "user": "root",

         "roles": [

                   {

                            "role": "root",

                            "db": "admin"

                   }

         ]

}

 

>db.auth("root","Zytest6699")

1

> show users;

{

         "_id": "admin.root",

         "user": "root",

         "db": "admin",

         "roles": [

                   {

                            "role": "root",

                            "db": "admin"

                   }

         ]

}

 

到此处开启mongodb-master 配置文件的认证登陆参数:

auth = true

重启mongodb-master服务

 

登陆mongodb-masteradmin库下创建另外一个admin数据库的管理账户:

[root@localhost ~]# mongo 127.0.0.1:27017

MongoDB shell version: 3.0.5

connecting to: 127.0.0.1:27017/test

> use admin;

switched to db admin

>db.auth("root","Zytest6699")

1

> show users;

{

         "_id": "admin.root",

         "user": "root",

         "db": "admin",

         "roles": [

                   {

                            "role": "root",

                            "db": "admin"

                   }

         ]

}

 

> db.createUser( 

...   { 

...     user:"ZyDBA", 

...     pwd:"Zytest6699", 

...    roles: [ { role: "root", db: "admin" } ] 

...   } 

... ) 

Successfully added user: {

         "user": "ZyDBA",

         "roles": [

                   {

                            "role": "root",

                            "db": "admin"

                   }

         ]

}

> shou users;

2017-09-10T09:36:18.511+0800 E QUERY    SyntaxError: Unexpected identifier

> show users;

{

         "_id": "admin.root",

         "user": "root",

         "db": "admin",

         "roles": [

                   {

                            "role": "root",

                            "db": "admin"

                   }

         ]

}

{

         "_id": "admin.ZyDBA",

         "user": "ZyDBA",

         "db": "admin",

         "roles": [

                   {

                            "role": "root",

                            "db": "admin"

                   }

         ]

}

 

Mongod-slave从实例

启动mongodb-slave实例:

[root@localhost mongodb-slave]#/etc/init.d/mongod1 start

Starting MongoDB Server...

[root@localhost mongodb-slave]# about tofork child process, waiting until server is ready for connections.

forked process: 1896

child process started successfully, parentexiting

 

[root@localhost mongodb-slave]# ss-lntup|grep mongo

tcp   LISTEN     0      128                    *:27017                 *:*      users:(("mongod",1709,6))

tcp   LISTEN     0      128                    *:27018                 *:*      users:(("mongod",1896,6))

 

查看mongodb-slave实例的日志文件:

[root@localhost logs]# tailf/data/mongodb-slave/logs/mongodb.log

2017-09-10T09:55:44.007+0800 I REPL     [replslave] repl: syncing fromhost:127.0.0.1:27017

2017-09-10T09:55:54.008+0800 I REPL     [replslave] repl: syncing fromhost:127.0.0.1:27017

2017-09-10T09:56:04.008+0800 I REPL     [replslave] repl: syncing fromhost:127.0.0.1:27017

2017-09-10T09:56:14.008+0800 I REPL     [replslave] repl: syncing fromhost:127.0.0.1:27017

2017-09-10T09:56:24.008+0800 I REPL     [replslave] repl: syncing fromhost:127.0.0.1:27017

2017-09-10T09:56:34.009+0800 I REPL     [replslave] repl: syncing fromhost:127.0.0.1:27017

2017-09-10T09:56:44.009+0800 I REPL     [replslave] repl: syncing fromhost:127.0.0.1:27017

2017-09-10T09:56:54.009+0800 I REPL     [replslave] repl: syncing fromhost:127.0.0.1:27017

2017-09-10T09:57:04.009+0800 I REPL     [replslave] repl: syncing fromhost:127.0.0.1:27017

提示从库已经开始同步。


2.1.2验证主从复制配置结果

安装mongodb windows客户端登陆软件来验证操作主从是否配置成功

Robomongo 0.9.0-RC9

主库验证:


2.1.3相关的配置文件以及认证文件

单台服务器开启mongodb多实例,以及配置验证主从复制

Mongodb主库配置文件

[root@localhost ~]# cat/usr/local/mongodb/mongod.cnf

logpath=/data/mongodb-master/logs/mongodb.log

logappend = true

#fork and run in background

fork = true

port = 27017

dbpath=/data/mongodb-master/data

#location of pidfile

pidfilepath=/data/mongodb-master/mongod.pid

auth = true

keyFile = /tmp/mongo-keyfile

master = true

 

mongodb从库配置文件:

 

[root@localhost ~]# cat/usr/local/mongodb/mongod1.cnf

logpath=/data/mongodb-slave/logs/mongodb.log

logappend = true

#fork and run in background

fork = true

port = 27018

dbpath=/data/mongodb-slave/data

#location of pidfile

pidfilepath=/data/mongodb-svale/mongod.pid

slave = true

source = 127.0.0.1:27017

auth = true

keyFile = /tmp/mongo-keyfile

#only = test001

#only = test002

 

开启主从复制验证:

随机生成keyFile或者手动写入,key的长度必须是6-1024base64字符,unix必须相同组权限,windows下不需要

openssl rand -base64 1024>/tmp/mongo-keyfile

 

启动mongodb-master:

 

[root@localhost ~]# /etc/init.d/mongodstart

Starting MongoDB Server...

[root@localhost ~]# about to fork childprocess, waiting until server is ready for connections.

forked process: 1287

child process started successfully, parentexiting

[root@localhost data]# ls/data/mongodb-master/data/

journal local.1   local.11  local.13 local.15  local.17  local.3 local.5  local.7  local.9  mongod.lock   _tmp

local.0 local.10  local.12  local.14 local.16  local.2   local.4 local.6  local.8  local.ns storage.bson

 


mongodb初始化数据库的大data文件特别的大,原因是:

oplog默认的大小是5%点数据库分区挂载点/data的大小,就导致了local数据库过大的问题

[root@localhost data]# du -sh/data/mongodb-master/data/

35G  /data/mongodb-master/data/



 本文转自 wjw555 51CTO博客,原文链接:http://blog.51cto.com/wujianwei/1964080

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL MongoDB 数据安全/隐私保护
MongoDB开启访问权限控制
概述       在MongoDB实例上开启访问权限控制,意味着强制要求用户输入账号密码进行授权认证。在开启了访问权限控制的MongoDB实例上,用户能进行的操作取决于登陆账号的角色(roles)。       MongoDB支持多种授权认证机制。下面将介绍如何使用MongoDB默认的机制开启访问权限控制。
|
存储 NoSQL 安全
MongoDB基本操作(五)——分片集群与安全认证
MongoDB基本操作(五)——分片集群与安全认证
463 0
MongoDB基本操作(五)——分片集群与安全认证
|
运维 NoSQL 自动驾驶
MongoDB与阿里云交出三年合作优秀“成绩单”,携手开启下一站创新
MongoDB开发者数据平台助力游戏、汽车、物联网、金融、物流等行业释放创新潜能
MongoDB与阿里云交出三年合作优秀“成绩单”,携手开启下一站创新
|
NoSQL MongoDB 数据库
MongoDB服务开启及简单语法(新手教程)
刚开始学习mongodb教你如何打开服务和一些简单语法
587 0
|
存储 NoSQL 关系型数据库
|
NoSQL 安全 关系型数据库
|
NoSQL Redis 开发者
Redis&MongoDB 社区双周刊第3期:Redis主从复制基本原理
云栖社区已有1000位Redis&MongoDB开发者,发布了5000+Redis文章,发布了2000+MongoDB文章,沉淀了800+的Redis精品问答,沉淀了1000+的MongoDB精品问答。
4648 0
|
NoSQL Shell 数据库