音乐人闭能文 發表於 2023-8-19 00:00:00

CentOS 7下MongoDB的安装配置详解

<p>
        <span><strong>一、Mongodb安装</strong></span></p>
<p>
        以下安装步骤以dp用户执行</p>
<p>
        1. 下载mongodb 3.4.2的安装包:</p>
<p>
        “mongodb-linux-x86_64-rhel70-3.4.2.tgz”,放在~/software下。</p>
<p>
        2. 解压该文件包:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_751065">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cd</code> <code class="bash plain">~</code><code class="bash plain">/software</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">tar</code> <code class="bash plain">-xf mongodb-linux-x86_64-rhel70-3.4.2.tgz</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        得到文件夹 mongodb-linux-x86_64-rhel70-3.4.2/,其中的bin文件夹包含Mongodb的所有可执行文件。</p>
<p>
        3. 将bin文件夹拷贝到dp用户的默认可执行文件目录~/bin</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_110080">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">mv</code> <code class="bash plain">bin ~/</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        4. 创建数据库文件夹</p>
<p>
        创建数据库文件目录,放在~/data/db下</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_811774">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">mkdir</code> <code class="bash plain">-p ~</code><code class="bash plain">/data/db</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        启动mongod服务</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_129366">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ mongod -dbpath ~</code><code class="bash plain">/data/db</code> <code class="bash plain">-port 7974</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        如可以启动,则安装成功。如不成功,可能需要进行SELinux配置,允许MongoDB可以在相应端口启动</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_904125">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash comments"># semanage port -a -t mongod_port_t -p tcp 7974</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        注:7974是本项目MongoDB使用的端口,代替默认端口 27017</p>
<p>
        <span><strong>二、MongoDB配置</strong></span></p>
<p>
        1. 写配置脚本:</p>
<p>
        创建一个脚本mongod.conf,存放在/home/dp/data/mongodb/config下,内容为</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_911132">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                        <div class="line number18 index17 alt1">
                                                                18</div>
                                                        <div class="line number19 index18 alt2">
                                                                19</div>
                                                        <div class="line number20 index19 alt1">
                                                                20</div>
                                                        <div class="line number21 index20 alt2">
                                                                21</div>
                                                        <div class="line number22 index21 alt1">
                                                                22</div>
                                                        <div class="line number23 index22 alt2">
                                                                23</div>
                                                        <div class="line number24 index23 alt1">
                                                                24</div>
                                                        <div class="line number25 index24 alt2">
                                                                25</div>
                                                        <div class="line number26 index25 alt1">
                                                                26</div>
                                                        <div class="line number27 index26 alt2">
                                                                27</div>
                                                        <div class="line number28 index27 alt1">
                                                                28</div>
                                                        <div class="line number29 index28 alt2">
                                                                29</div>
                                                        <div class="line number30 index29 alt1">
                                                                30</div>
                                                        <div class="line number31 index30 alt2">
                                                                31</div>
                                                        <div class="line number32 index31 alt1">
                                                                32</div>
                                                        <div class="line number33 index32 alt2">
                                                                33</div>
                                                        <div class="line number34 index33 alt1">
                                                                34</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">systemLog:</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash spaces"> </code><code class="bash plain">destination: </code><code class="bash functions">file</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash comments">###日志存储位置</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash spaces"> </code><code class="bash plain">path: </code><code class="bash plain">/home/dp/data/mongodb/log/mongod</code><code class="bash plain">.log</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash plain">logAppend: </code><code class="bash functions">true</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">storage:</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash comments">##journal配置</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash spaces"> </code><code class="bash plain">journal:</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash plain">enabled: </code><code class="bash functions">true</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="bash comments">##数据文件存储位置</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash plain">dbPath: </code><code class="bash plain">/home/dp/data/db/</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="bash comments">##是否一个库一个文件夹</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash plain">directoryPerDB: </code><code class="bash functions">true</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="bash comments">##数据引擎</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash plain">engine: wiredTiger</code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="bash comments">##WT引擎配置</code>
</div>
                                                                <div class="line number17 index16 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash plain">wiredTiger:</code>
</div>
                                                                <div class="line number18 index17 alt1">
                                                                        <code class="bash spaces"> </code><code class="bash plain">engineConfig:</code>
</div>
                                                                <div class="line number19 index18 alt2">
                                                                        <code class="bash comments">##WT最大使用cache(根据服务器实际情况调节4~8)</code>
</div>
                                                                <div class="line number20 index19 alt1">
                                                                        <code class="bash spaces">  </code><code class="bash plain">cacheSizeGB: 4</code>
</div>
                                                                <div class="line number21 index20 alt2">
                                                                        <code class="bash comments">##是否将索引也按数据库名单独存储</code>
</div>
                                                                <div class="line number22 index21 alt1">
                                                                        <code class="bash spaces">  </code><code class="bash plain">directoryForIndexes: </code><code class="bash functions">true</code>
</div>
                                                                <div class="line number23 index22 alt2">
                                                                        <code class="bash comments">##表压缩配置,数据压缩算法,可选值“none”、“snappy”、“zlib”</code>
</div>
                                                                <div class="line number24 index23 alt1">
                                                                        <code class="bash spaces"> </code><code class="bash plain">collectionConfig:</code>
</div>
                                                                <div class="line number25 index24 alt2">
                                                                        <code class="bash spaces">  </code><code class="bash plain">blockCompressor: none</code>
</div>
                                                                <div class="line number26 index25 alt1">
                                                                        <code class="bash comments">##索引配置</code>
</div>
                                                                <div class="line number27 index26 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash plain">indexConfig:</code>
</div>
                                                                <div class="line number28 index27 alt1">
                                                                        <code class="bash spaces">  </code><code class="bash plain">prefixCompression: </code><code class="bash functions">true</code>
</div>
                                                                <div class="line number29 index28 alt2">
                                                                        <code class="bash comments">##使mongo进程成为系统集成(父id为1)</code>
</div>
                                                                <div class="line number30 index29 alt1">
                                                                        <code class="bash plain">processManagement:</code>
</div>
                                                                <div class="line number31 index30 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash plain">fork: </code><code class="bash functions">true</code>
</div>
                                                                <div class="line number32 index31 alt1">
                                                                        <code class="bash comments">##端口配置,将默认端口设为7974(默认为27017)</code>
</div>
                                                                <div class="line number33 index32 alt2">
                                                                        <code class="bash plain">net:</code>
</div>
                                                                <div class="line number34 index33 alt1">
                                                                        <code class="bash spaces"> </code><code class="bash plain">port: 7974</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        2. 取消透明大页:</p>
<p>
        MongoDB建议关闭Linux系统默认开启的透明大页功能,可编辑rc.local文件,使其在系统启动的时候关闭:</p>
<p>
        编辑rc.local文件:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_206380">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain"></code><code class="bash comments"># vim /etc/rc.d/rc.local</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        增加下列内容:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_71617">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash keyword">if</code> <code class="bash functions">test</code> <code class="bash plain">-f </code><code class="bash plain">/sys/kernel/mm/transparent_hugepage/enabled</code><code class="bash plain">; </code><code class="bash keyword">then</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash spaces"> </code><code class="bash functions">echo</code> <code class="bash plain">never &gt; </code><code class="bash plain">/sys/kernel/mm/transparent_hugepage/enabled</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash keyword">fi</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash spaces"> </code><code class="bash keyword">if</code> <code class="bash functions">test</code> <code class="bash plain">-f </code><code class="bash plain">/sys/kernel/mm/transparent_hugepage/defrag</code><code class="bash plain">; </code><code class="bash keyword">then</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash functions">echo</code> <code class="bash plain">never &gt; </code><code class="bash plain">/sys/kernel/mm/transparent_hugepage/defrag</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash spaces"> </code><code class="bash keyword">fi</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        保存退出,然后赋予rc.local文件执行权限:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_594863">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain"></code><code class="bash comments"># chmod +x /etc/rc.d/rc.local</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        再重启系统即可。</p>
<p>
        3. 将MongoDB设为开机启动</p>
<p>
        在CentOS 7下使用systemctl服务管理方式配置MongoDB的启动:</p>
<p>
        CentOS 7的服务systemctl脚本存放在/usr/lib/systemd/,MongoDB需要开机不登陆就能运行,就要存在系统服务/usr/lib/systemd/system目录下。</p>
<p>
        每一个服务以.service结尾,如mongod.service。内容分为3部分:、和</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_151992">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain"></code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">Description=MongoDB database server</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">After=network.target</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">After=syslog.target</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                         </div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">  </code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash comments">#Type=forking #一次性启动,mongod的后台保持由mongod自己的配置文件中定义</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">Type=oneshot</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">User=dp</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="bash comments">#PIDFile=/home/dp/data/mongodb/pid</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash plain">ExecStart=</code><code class="bash plain">/usr/bin/numactl</code> <code class="bash plain">--interleave=all </code><code class="bash plain">/home/dp/bin/mongod</code> <code class="bash plain">-f </code><code class="bash plain">/home/dp/data/mongodb/config/mongod</code><code class="bash plain">.conf</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="bash comments">#ExecReload=</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="bash comments">#ExecStop=</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="bash plain">PrivateTmp=</code><code class="bash functions">true</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                         </div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="bash plain"></code>
</div>
                                                                <div class="line number17 index16 alt2">
                                                                        <code class="bash plain">WantedBy=multi-user.target</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        注:MongoDB建议关闭NUMA功能,用 numactl --interleave=all 方式启动 mongod 进程<br>
        脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system目录下,这时就可以利用systemctl进行配置:</p>
<ul>
<li>
                重新加载配置文件用systemctl daemon-reload</li>
        <li>
                用systemctl start mongod可测试服务是否可以成功运行</li>
        <li>
                如果不能运行则可以使用systemctl status mongod查看错误信息和其他服务信息。</li>
</ul>
<p>
        如果无法启动MongoDB,可检查日志/home/dp/data/mongodb/log/mongod.log,如果是由于如下错误:</p>
<p>
        WiredTiger error (13) , file:WiredTiger.wt, connection: /home/dp/data/db/WiredTiger.turtle: handle-open: open: Permission denied</p>
<p>
        可能是由于WiredTiger.turtle的权限不足,或所有者不是dp用户,可以用chmod、chown、chgrp命令修改该文件的属性。</p>
<p>
        使用systemctl enable mongod就可以将所编写的服务添加至开机启动。</p>
<p>
        <span><strong>三、MongoDB的安全配置</strong></span></p>
<p>
        1. 修改登陆端口号和IP</p>
<p>
        在配置文件/home/dp/data/mongodb/config/mongod.conf下,定义:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_279340">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">net:</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash spaces"> </code><code class="bash plain">bindIp: 127.0.0.1,192.168.117.55</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash spaces"> </code><code class="bash plain">port: 79742017</code><code class="bash plain">/3/8</code> <code class="bash plain">16:59:55 2017</code><code class="bash plain">/3/8</code> <code class="bash plain">16:59:58</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        2. 添加认证用户</p>
<p>
        在刚安装完毕的时候,MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息。当集合admin.system.users中一个用户都没有时,即使mongod启动时添加了—auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以—auth 参数启动),直到在admin.system.users中添加了一个用户。加固的核心是只有在admin.system.users中添加用户之后,mongodb的认证,授权服务才能生效。</p>
<p>
        步骤一:在未开启认证的环境下,登录到数据库</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_220549">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ mongo 127.0.0.1:7974</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        步骤二:切换到admin数据库</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_828852">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">&gt; use admin</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        步骤三:创建管理员账号</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_299383">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">&gt;db.createUser({</code><code class="sql color2">user</code><code class="sql plain">:</code><code class="sql string">"ems"</code><code class="sql plain">,pwd:</code><code class="sql string">"pubugou2017"</code><code class="sql plain">,roles:[</code><code class="sql string">"root"</code><code class="sql plain">]})</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        新增的用户在 db.system.users 中</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_266569">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">&gt; db.getCollectionNames()</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">[ </code><code class="sql string">"system.indexes"</code><code class="sql plain">, </code><code class="sql string">"system.users"</code><code class="sql plain">, </code><code class="sql string">"system.version"</code> <code class="sql plain">]</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        说明:</p>
<p>
        1)MongoDB从V3版本开始取消使用addUser方法,采用db.createUser方法创建用户;</p>
<p>
        2)账号不要设置为常见账号,密码需要满足一定的复杂度,至少8位以上,包括大小写字母、数字、特殊字符混合体,不要使用生日、姓名、身份证编号等常见密码。</p>
<p>
        步骤四:验证用户是否创建成功</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_901505">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">&gt; db.auth(</code><code class="sql string">"supper"</code><code class="sql plain">,</code><code class="sql string">"supWDxsf67%H"</code><code class="sql plain">)</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">1</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql plain">&gt; exit</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="sql plain">bye</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        步骤五:杀掉进程,重启mongoDB服务</p>
<p>
        <span><strong>四、Mongodb C drive安装</strong></span></p>
<p>
        1. 下载Mongodb C驱动文件解压</p>
<p>
        下载地址为:mongo-c-driver 1.61</p>
<p>
        2. 运行配置脚本</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_831986">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ .</code><code class="bash plain">/configure</code> <code class="bash plain">–disable-automatic-init-and-cleanup</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        3. 编译</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_557478">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">make</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        4. 安装</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_840519">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash functions">make</code> <code class="bash functions">install</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        注:使用 sudo 应先对dp用户的sudo权限进行设置,命令为</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_203148">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash comments"># visudo</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        或者使用root用户</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_147426">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash comments"># make install</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        安装生成的头文件在/usr/local/include/libmongoc-1.0下,库文件在/usr/local/lib下。</p>
<p>
        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。</p>
<p>
        原文链接:http://www.jianshu.com/p/ccdd3e884b86</p>
頁: [1]
查看完整版本: CentOS 7下MongoDB的安装配置详解