阿军新号 發表於 2022-8-15 08:35:00

Linux下安装Mongodb

<p>1.离线安装MongoDB<br>1.1 文档编写时的安装环境<br>操作系统:CentOS Linux release 7.5.1804 (Core)</p>
<p>虚拟机环境:内存 974M,磁盘 20G,CPU架构 x86_64</p>
<p>1.2 准备<br>安装版本:4.2.10</p>
<p>下载如下5个包,下载链接</p>
<p>mongodb-org-server-4.2.10-1.el7.x86_64.rpm</p>
<p>mongodb-org-shell-4.2.10-1.el7.x86_64.rpm</p>
<p>mongodb-org-mongos-4.2.10-1.el7.x86_64.rpm</p>
<p>mongodb-org-tools-4.2.10-1.el7.x86_64.rpm</p>
<p>mongodb-org-4.2.10-1.el7.x86_64.rpm</p>
<p>1.3 安装步骤<br>a. 将rpm的压缩包(mongodb4.2.10-rpm安装包.tar)上传至业务账号的根目录;</p>
<p>b. 解压缩文件mongodb4.2.10-rpm安装包.tar;</p>
<div class="cnblogs_code">
<pre>$ tar -xvf mongodb4.2.10-rpm安装包.tar</pre>
</div>
<p>c. 安装rpm包</p>
<div class="cnblogs_code">
<pre>$ cd mongodb4.2.10-<span style="color: rgba(0, 0, 0, 1)">rpm
$ sudo rpm -ivh mongodb-org-server-4.2.10-1<span style="color: rgba(0, 0, 0, 1)">.el7.x86_64.rpm
$ sudo rpm -ivh mongodb-org-shell-4.2.10-1<span style="color: rgba(0, 0, 0, 1)">.el7.x86_64.rpm
$ sudo rpm -ivh mongodb-org-mongos-4.2.10-1<span style="color: rgba(0, 0, 0, 1)">.el7.x86_64.rpm
$ sudo rpm -ivh mongodb-org-tools-4.2.10-1<span style="color: rgba(0, 0, 0, 1)">.el7.x86_64.rpm
$ sudo rpm -ivh mongodb-org-4.2.10-1.el7.x86_64.rpm </pre>
</div>
<p>d.防止在线升级</p>
<div class="cnblogs_code">
<pre>$ sudo vi /etc/<span style="color: rgba(0, 0, 0, 1)">yum.conf
exclude</span>=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools</pre>
</div>
<h2>1.4 配置mongdb</h2>
<p>配置文件路径:/etc/mongod.conf</p>
<p>a.创建mongo数据及日志存放路径</p>
<div class="cnblogs_code">
<pre>$ sudo mkdir -p /data/mongo/<span style="color: rgba(0, 0, 0, 1)">data
$ sudo mkdir -p /data/mongo/log</pre>
</div>
<p>b.修改几个重要默认配置</p>
<p>如:path,dbPath,pidFilePath,bindIp</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">systemLog:
destination: file
logAppend: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
path: </span>/data/mongo/log/<span style="color: rgba(0, 0, 0, 1)">mongod.log#日志存放路径
storage:
dbPath: </span>/data/mongo/<span style="color: rgba(0, 0, 0, 1)">data #数据存放路径
journal:
    enabled: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
processManagement:
fork: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)"># fork and run in background
pidFilePath: </span>/data/mongo/<span style="color: rgba(0, 0, 0, 1)">mongod.pid#pid文件路径
timeZoneInfo: </span>/usr/share/<span style="color: rgba(0, 0, 0, 1)">zoneinfo
net:
port: </span>27017<span style="color: rgba(0, 0, 0, 1)">
bindIp: </span>0.0.0.0 #任何主机皆可以连接</pre>
</div>
<h2>1.5 启动关闭</h2>
<div class="cnblogs_code">
<pre>$ sudo mongod -f /etc/<span style="color: rgba(0, 0, 0, 1)">mongod.conf#启动
$ sudo mongod -f /etc/mongod.conf --<span style="color: rgba(0, 0, 0, 1)">shutdown #关闭
$ mongo #客户端连接mongo</pre>
</div>
<h2>1.6 配置ssl</h2>
<p>https://download.csdn.net/download/weixin_38701683/12844156</p>
<h3>1.6.1 生成证书</h3>
<p>a. 查看是否安装openssl</p>
<div class="cnblogs_code">
<pre>$ openssl version </pre>
</div>
<p>b. 若没有安装请安装</p>
<p>c. 生成证书</p>
<p>参考文章&nbsp;&nbsp;https://blog.csdn.net/Loiterer_Y/article/details/106709978</p>
<div class="cnblogs_code">
<pre># cd /etc/ssl/<span style="color: rgba(0, 0, 0, 1)">
#生成ca.pem
# openssl req </span>-out ca.pem -<span style="color: rgba(0, 0, 255, 1)">new</span> -x509 -days 3650<span style="color: rgba(0, 0, 0, 1)">
输入密码123456

#生成server.pem
# openssl genrsa </span>-out server.key 2048<span style="color: rgba(0, 0, 0, 1)"> #生成服务器端私钥
# openssl req </span>-key server.key -<span style="color: rgba(0, 0, 255, 1)">new</span> -<span style="color: rgba(0, 0, 0, 1)">out server.req #生成服务器端申请文件
# openssl x509 </span>-req -in server.req -CA ca.pem -CAkey privkey.pem -CAcreateserial -out server.crt -days 3650<span style="color: rgba(0, 0, 0, 1)"> #生成服务器端证书
# cat server.key server.crt </span>&gt;<span style="color: rgba(0, 0, 0, 1)"> server.pem #合并服务器端私钥和服务器端证书,生成server.pem
# openssl verify </span>-<span style="color: rgba(0, 0, 0, 1)">CAfile ca.pem server.pem #校验服务器端pem文件
server.pem: OK

#生成client.pem
# openssl genrsa </span>-out client.key 2048<span style="color: rgba(0, 0, 0, 1)"> #生成客户端私钥   
# openssl req </span>-key client.key -<span style="color: rgba(0, 0, 255, 1)">new</span> -<span style="color: rgba(0, 0, 0, 1)">out client.req #生成客户端申请文件
# openssl x509 </span>-req -in client.req -CA ca.pem -CAkey privkey.pem -CAserial ca.srl-out client.crt -days 3650<span style="color: rgba(0, 0, 0, 1)"> #生成客户端证书
# openssl x509 </span>-req -in client.req -CA ca.pem -CAkey privkey.pem -CAserial ca.srl-out client.crt -days 3650<span style="color: rgba(0, 0, 0, 1)"> #合并客户端私钥和客户端证书,生成client.pem
# openssl verify </span>-<span style="color: rgba(0, 0, 0, 1)">CAfile ca.pem client.pem #校验客户端pem文件
client.pem: OK</span></pre>
</div>
<h3>1.6.2 配置mongod.conf</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">#添加如下配置
net:
   tls:
      mode: requireTLS
      certificateKeyFile: </span>/etc/ssl/<span style="color: rgba(0, 0, 0, 1)">server.pem
      certificateKeyFilePassword: </span>123456<span style="color: rgba(0, 0, 0, 1)">
      CAFile: </span>/etc/ssl/<span style="color: rgba(0, 0, 0, 1)">ca.pem
      allowConnectionsWithoutCertificates: </span><span style="color: rgba(0, 0, 255, 1)">true</span></pre>
</div>
<h3>1.6.3 mongo客户端连接</h3>
<p>参考链接&nbsp; https://www.mongodb.com/docs/v4.2/tutorial/configure-ssl-clients/</p>
<div class="cnblogs_code">
<pre># mongo --tls --host 192.168.44.130 -tlsCAFile /etc/ssl/ca.pem --tlsCertificateKeyFile /etc/ssl/client.pem</pre>
</div>
<h3>1.6.4 java驱动连接</h3>
<p>参考文章&nbsp;&nbsp;https://blog.csdn.net/loiterer_y/article/details/106716918</p>
<p>代码&nbsp;&nbsp;https://gitee.com/idensir/CommonDemo/tree/master/MongoDBDemo</p>
<p>a.将ca.pem入库</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">#keytool为jdk安装自带的工具
# keytool </span>-<span style="color: rgba(0, 0, 255, 1)">import</span> -keystore cacerts -file ca.pem -storepass 123456</pre>
</div>
<p>b.在linux服务器上将client.pem需转化为pkcs12格式</p>
<div class="cnblogs_code">
<pre># openssl pkcs12 -export -out mongodb.pkcs12 -in client.pem</pre>
</div>
<p>c.将cacerts,mongodb.pkcs12拷贝到客户端</p>
<p>d.maven引入依赖</p>
<div class="cnblogs_code">
<pre>&lt;!-- 新驱动 --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.mongodb&lt;/groupId&gt;
    &lt;artifactId&gt;mongodb-driver-sync&lt;/artifactId&gt;
    &lt;version&gt;3.12.7&lt;/version&gt;
&lt;/dependency&gt;

&lt;!-- 旧驱动 --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.mongodb&lt;/groupId&gt;
    &lt;artifactId&gt;mongodb-driver-legacy&lt;/artifactId&gt;
    &lt;version&gt;3.12.7&lt;/version&gt;
&lt;/dependency&gt;

&lt;!-- MongoTemplate需要的依赖 --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.springframework.data&lt;/groupId&gt;
    &lt;artifactId&gt;spring-data-mongodb&lt;/artifactId&gt;
    &lt;version&gt;2.2.10.RELEASE&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
<p>e.旧版驱动连接</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.MongoClient;
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.MongoClientURI;
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> OldDriverConnector {
    </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> main(String[] args) {

      System.setProperty(</span>"javax.net.ssl.trustStore","e://cacerts"<span style="color: rgba(0, 0, 0, 1)">);
      System.setProperty(</span>"javax.net.ssl.trustStorePassword", "123456"<span style="color: rgba(0, 0, 0, 1)">);
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 配置信任证书</span>
      System.setProperty("javax.net.ssl.keyStore", "e://mongodb.pkcs12"<span style="color: rgba(0, 0, 0, 1)">);
      System.setProperty(</span>"javax.net.ssl.keyStorePassword", "123456"<span style="color: rgba(0, 0, 0, 1)">);
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 连接mongo数据库</span>
      MongoClientURI uri = <span style="color: rgba(0, 0, 255, 1)">new</span> MongoClientURI("mongodb://192.168.44.130:27017/?serverSelectionTimeoutMS=1000&amp;ssl=true" +
                "&amp;sslinvalidhostnameallowed=true"<span style="color: rgba(0, 0, 0, 1)">);
      MongoClient client </span>= <span style="color: rgba(0, 0, 255, 1)">new</span> MongoClient(uri); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">注意引入的包为旧驱动中的包
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 获取mongo数据库中的库名</span>
<span style="color: rgba(0, 0, 0, 1)">      System.out.println(client.listDatabaseNames().first());

    }
}</span></pre>
</div>
<p>f.新版驱动连接</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.client.MongoClient;
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.client.MongoClients;
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> org.springframework.data.mongodb.core.MongoTemplate;
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> java.util.List;
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> NewDriverConnector {
    </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> main(String[] args) {
      System.setProperty(</span>"javax.net.ssl.trustStore","e://cacerts"<span style="color: rgba(0, 0, 0, 1)">);
      System.setProperty(</span>"javax.net.ssl.trustStorePassword", "123456"<span style="color: rgba(0, 0, 0, 1)">);
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 配置信任证书</span>
      System.setProperty("javax.net.ssl.keyStore", "e://mongodb.pkcs12"<span style="color: rgba(0, 0, 0, 1)">);
      System.setProperty(</span>"javax.net.ssl.keyStorePassword", "123456"<span style="color: rgba(0, 0, 0, 1)">);

      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">注意引入的包为就版驱动包中的类</span>
      MongoClient mongoClient = MongoClients.create("mongodb://192.168.44.130:27017/?serverSelectionTimeoutMS=10000&amp;ssl=true" +
                "&amp;sslinvalidhostnameallowed=true"<span style="color: rgba(0, 0, 0, 1)">);
      System.out.println(mongoClient.listDatabaseNames().first());

      MongoTemplate template </span>= <span style="color: rgba(0, 0, 255, 1)">new</span> MongoTemplate(mongoClient, "test"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">      template.insert(new Person("aaa", 11, "女"));</span>
      List&lt;Person&gt; all = template.findAll(Person.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">);
      </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> (Person person : all) {
            System.out.println(person.toString());
      }
    }
}</span></pre>
</div>
<h3>1.6.5 Navicat连接</h3>
<p>a.设置连接</p>
<p><img src="https://img2022.cnblogs.com/blog/1085017/202208/1085017-20220815083435334-1180940772.png" alt="" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;b.将生成的ca.pem,client.pem拷贝到客户端,并设置ssl</p>
<p><img src="https://img2022.cnblogs.com/blog/1085017/202208/1085017-20220815083447152-2006750343.png" alt="" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>————————————————<br>版权声明:本文为CSDN博主「还之简」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。<br>原文链接:https://blog.csdn.net/wuyindengliu/article/details/122364733</p><br><br>
来源:https://www.cnblogs.com/Fzzf1/p/16587008.html
頁: [1]
查看完整版本: Linux下安装Mongodb