天天看点

Mongodb带验证的主从复制架构

先说几个关于mongodb的使用命令:

    1.创建用户    db.addUser('username','password');

    2.查询当前库中用户信息  db,system.users.find(); 

    3.进入响应数据库    use databaseName;

    4.显示当前数据库所有库的大小信息 show dbs;

    5.显示当前库的所有表信息 show collections;

    6.对数据进行用户验证 db.auth('username','password');

    7.创建表 db.createCollection('test');

    8.关闭数据的时候不要使用kill -9 的方式进行关闭数据库,这样会导致数据的破坏,关闭方法有两种,如下:

方法一:

1

2

3

4

<code>#进入admin数据库</code>

<code>use admin;</code>

<code>#执行关闭数据库命令</code>

<code>db.shutdownServer();</code>

方法二:

<code>#过滤出进程ID</code>

<code>netstat</code> <code>-ntpl | </code><code>grep</code> <code>port</code>

<code>#使用-15的方式进行杀掉进程</code>

<code>kill</code> <code>-15 ID</code>

讲一个话外题,不感兴趣的同学可以略过,直接next了

    比如你创建了一个用户,权限只能看test库,当你使用mongodb mv管理软件且使用管理员的帐号连接上后,你会神奇的发现帐号test库并不显示,原因在于此数据库中没有任何的数据,当你使用第七条命令创建了一个表后,神奇的事情发生了,test这个数据库出现了

回归正题

    关于mongodb的主从复制

         不带账户验证的主从复制

                此种方案非常好理解,且操作简单,但是使用起来不安全。操作步骤大概如下:

                  系统环境介绍:Ubuntu 12.04.1 、MongoDB shell version: 2.6.1

                     启动的时候 只需要指定master和slave就可以了如下:

<code>mongod --dbpath=</code><code>/usr/local/mongodb/data/mongodb_27017/</code> <code>--fork --logpath=</code><code>/var/log/mongod</code><code>.log --port 27017 --master</code>

<code>mongod --dbpath=</code><code>/usr/local/mongodb/data/mongodb_27018/</code> <code>--fork --logpath=</code><code>/var/log/mongod27018</code><code>.log --port 27018 --slave --</code><code>source</code><code>=127.0.0.1:2701</code>

         带账户验证的主从复制

                 此种方案就有点麻烦了,mongodb的官方文档注明了,需要使用一个keyfile的关键字进行数据同步,仅仅是哟过--auth是不行的。操作步骤大概如下:

                        系统环境介绍:Ubuntu 12.04.1 、MongoDB shell version: 2.6.1

                             步骤一、首先要进入admin库设置一个admin的账号,此账号为管理员帐号,对所有库都具有增删改查的权限,操作步骤如下:

<code>mongo --host = 127.0.0.1:27017</code>

<code>db.addUser(</code><code>'admin'</code><code>,</code><code>'admin'</code><code>);</code>

                            步骤二、停掉现有的mongodb,然后使用如下参数启动,测试admin账户是否正确

<code>mongod --dbpath=</code><code>/usr/local/mongodb/data/mongodb_27017/</code> <code>--fork --logpath=</code><code>/var/log/mongod</code><code>.log --port 27017 --auth</code>

<code>db.auth(</code><code>'admin'</code><code>,</code><code>'admin'</code><code>);</code>

                            步骤三、在slave上同样的操作步骤,进行设置slave的admin帐号并验证(切记如果主从在同一台机器上不要,使用了同一个端口,)

                            步骤四、停到主从,然后生成key文件。步骤如下:

<code>openssl rand -base64 741 &gt; </code><code>/root/mongo-keyfile</code>

 会在root的宿主目录下生成一个文件mongo-keyfile文件 ll一下,看一下此文件大小,我第一次生成的时候文件大小为0,导致启动的时候失败

                            第五步、启动主从两个mongo。步骤如下

<code>mongod --dbpath=</code><code>/usr/local/mongodb/data/mongodb_27017/</code> <code>--fork --logpath=</code><code>/var/log/mongod</code><code>.log --port 27017 --auth --master --keyFile </code><code>/root/mongo-keyfile</code> 

<code>mongod --dbpath=</code><code>/usr/local/mongodb/data/mongodb_27018/</code> <code>--fork --logpath=</code><code>/var/log/mongod27018</code><code>.log --port 27018 --slave --</code><code>source</code><code>=127.0.0.1:27017 --auth --keyFile </code><code>/root/mongo-keyfile</code>

这样当操作主的时候 从自然也会跟着变化了

关于mongodb的账号设置管理与非管理员设置

               上面已经阐述了关于创建 “管理员”账号的操作方法,此处不就在阐述,如下内容阐述如何        创建普通用户权限

创建logdb库的普通用户,这个用户只可以操作本数据库,代码如下

5

6

<code>#创建一个可读写账户</code>

<code>use logdb;</code>

<code>db.addUser(</code><code>'username'</code><code>,</code><code>'password'</code><code>);</code>

<code>#创建一个只读账户</code>

<code>db.addUser(</code><code>'username'</code><code>,</code><code>'password'</code><code>,</code><code>true</code><code>)</code>

本文转自 xinsir999 51CTO博客,原文链接:http://blog.51cto.com/xinsir/1732416,如需转载请自行联系原作者