{"id":140,"date":"2019-11-27T03:12:08","date_gmt":"2019-11-27T03:12:08","guid":{"rendered":"http:\/\/www.betterit360.com\/?p=140"},"modified":"2019-11-27T03:12:08","modified_gmt":"2019-11-27T03:12:08","slug":"%e6%90%ad%e5%bb%bamongodb%e4%b8%89%e8%8a%82%e7%82%b9%e5%89%af%e6%9c%ac%e9%9b%86%ef%bc%88%e5%90%af%e7%94%a8keyfileauth%e8%ae%bf%e9%97%ae%e6%8e%a7%e5%88%b6%ef%bc%89","status":"publish","type":"post","link":"http:\/\/www.betterit360.com\/?p=140","title":{"rendered":"\u642d\u5efamongodb\u4e09\u8282\u70b9\u526f\u672c\u96c6\uff08\u542f\u7528keyfile+auth\u8bbf\u95ee\u63a7\u5236\uff09"},"content":{"rendered":"\n<p><strong>\u73af\u5883\u7248\u672c\uff1a<\/strong><strong><\/strong><\/p>\n\n\n\n<p>CentOS Linux release 7.6.1810 (Core)<\/p>\n\n\n\n<p>mongodb-linux-x86_64-rhel70-3.4.21.tgz<\/p>\n\n\n\n<p><strong>\u5b89\u88c5\u6b65\u9aa4\uff1a<\/strong><strong><\/strong><\/p>\n\n\n\n<p>The basic procedure is to start the\u00a0mongod\u00a0instances that will become members of the replica set, configure the replica set itself, and then add the\u00a0mongod\u00a0instances to it.<\/p>\n\n\n\n<p>Before you can deploy a replica set, you must install MongoDB on each system that will be part of your\u00a0replica set.<\/p>\n\n\n\n<h4><strong>1\u3001\u5728\u6bcf\u53f0\u673a\u5668\u4e0a\u4e0b\u8f7d\u89e3\u538bmongodb\u5b89\u88c5\u5305<\/strong><strong><\/strong><\/h4>\n\n\n\n<p>curl -O https:\/\/fastdl.mongodb.org\/linux\/mongodb-linux-x86_64-rhel70-3.4.21.tgz<br>tar -zxvf mongodb-linux-x86_64-rhel70-3.4.21.tgz<br>mv mongodb-linux-x86_64-rhel70-3.4.21\/ \/usr\/local\/mongodb<\/p>\n\n\n\n<h4><strong>2\u3001\u5728\u6bcf\u53f0\u673a\u5668\u4e0a\u521b\u5efamongodb\u7684data\u3001log\u4ee5\u53ca\u914d\u7f6e\u76ee\u5f55<\/strong><strong><\/strong><\/h4>\n\n\n\n<p>cd \/usr\/local\/mongodb<br>mkdir -p data\/db<br>mkdir log<br>touch log\/mongod.log<br>mkdir etc<br>touch etc\/mongod.conf<\/p>\n\n\n\n<h4><strong>3\u3001\u5728\u6bcf\u53f0\u673a\u5668\u4e0a\u914d\u7f6econfig\u6587\u4ef6<\/strong><strong><\/strong><\/h4>\n\n\n\n<p>vi etc\/mongod.conf<\/p>\n\n\n\n<p>\u4e3a\u4e86\u542f\u52a8\u65b9\u4fbf\uff0c\u53ef\u4ee5\u5c06mongodb\u7684\u542f\u52a8\u914d\u7f6e\u9879\u76f4\u63a5\u8bbe\u7f6e\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\uff1a<\/p>\n\n\n\n<p>dbpath = \/usr\/local\/mongodb\/data\/db\t\t\t\t# \u6307\u5b9a\u6570\u636e\u5e93\u8def\u5f84<br>logpath = \/usr\/local\/mongodb\/log\/mongod.log\t\t# \u6307\u5b9amongodb\u65e5\u5fd7\u6587\u4ef6<br>logappend = true\t\t\t\t\t\t\t\t# \u4f7f\u7528\u8ffd\u52a0\u7684\u65b9\u5f0f\u5199\u65e5\u5fd7<br>port = 27017\t\t\t\t\t\t\t\t\t#\u8bbe\u7f6e\u7aef\u53e3\u53f7\u4e3a27017<br>fork = true\t\t\t\t\t\t\t\t\t#\u8bbe\u7f6e\u4ee5\u5b88\u62a4\u8fdb\u7a0b\u7684\u65b9\u5f0f\u542f\u52a8mongod<br>replSet = testxhrs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\t\t\t\t#\u8bbe\u7f6e\u526f\u672c\u96c6\u7684\u540d\u5b57\u4e3atestxhrs\uff0c<strong>\u540c\u4e00\u526f\u672c\u96c6\u7fa4\u7684replSet\u540d\u79f0\u5fc5<\/strong><strong>\u987b<\/strong><strong>\u76f8\u540c<\/strong>\u3002<\/p>\n\n\n\n<p><strong>4<\/strong><strong>\u3001<\/strong><strong>\u5206\u522b\u5728\u6bcf\u53f0\u673a\u5668\u4e0a\u542f\u52a8<\/strong><strong>mongodb<\/strong><strong><\/strong><\/p>\n\n\n\n<p>cd \/usr\/local\/mongodb<br>.\/bin\/mongod -f .\/etc\/mongod.conf\t\t\t\t\t#\u6307\u5b9a\u4ee5mongod.conf\u914d\u7f6e\u542f\u52a8mongod<\/p>\n\n\n\n<h4><strong>5<\/strong><strong>\u3001\u521d\u59cb\u5316\u526f\u672c\u96c6<\/strong><strong><\/strong><\/h4>\n\n\n\n<p><strong>IMPORTANT<\/strong><strong>:<\/strong><strong>Run rs.initiate() on just one and only one mongod instance for the replica set.<\/strong><strong><\/strong><\/p>\n\n\n\n<p>\u767b\u5f55\u4efb\u610f\u4e00\u53f0\u673a\u5668\u7684mongodb\u540e\u53f0\u7ba1\u7406shell\uff1a<\/p>\n\n\n\n<p>cd \/usr\/local\/mongodb<br>.\/bin\/mongo<br>use admin<br>rs.initiate( {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;_id : &#8220;testxhrs&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;members: [<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ _id: 0, host: &#8220;192.168.191.147:27017&#8221; },<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ _id: 1, host: &#8220;192.168.191.148:27017&#8221; },<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ _id: 2, host: &#8220;192.168.191.149:27017&#8221; }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;]<\/p>\n\n\n\n<p>}) \u00a0  #\u521d\u59cb\u5316\u914d\u7f6e<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"423\" height=\"137\" src=\"http:\/\/www.betterit360.com\/wp-content\/uploads\/2019\/11\/\u642d\u5efamongodb\u4e09\u8282\u70b9\u526f\u672c\u96c6\uff08\u542f\u7528keyfileauth\u8bbf\u95ee\u63a7\u5236\uff09_\u56fe\u72471.png\" alt=\"\" class=\"wp-image-141\"\/><\/figure>\n\n\n\n<p><strong>\u6ce8\u610f\uff1a\u5982\u679c\u6267\u884c<\/strong><strong>\u521d\u59cb\u5316<\/strong><strong>\u62a5\u9519\uff0c\u68c0\u67e5\u4e09\u53f0\u670d\u52a1\u5668\u7684\u9632\u706b\u589927017\u7aef\u53e3\u662f\u5426\u5f00\u653e\u3002 <\/strong><\/p>\n\n\n\n<p>\u901a\u8fc7rs.conf()\u67e5\u770b\u526f\u672c\u96c6\u914d\u7f6e\uff1a<\/p>\n\n\n\n<p>testxhrs:PRIMARY&gt; rs.conf()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>\t&#8220;_id&#8221; : &#8220;testxhrs&#8221;,<\/p>\n\n\n\n<p>\t&#8220;version&#8221; : 1,<\/p>\n\n\n\n<p>\t&#8220;protocolVersion&#8221; : NumberLong(1),<\/p>\n\n\n\n<p>\t&#8220;members&#8221; : [<\/p>\n\n\n\n<p>\t\t{<\/p>\n\n\n\n<p>\t\t\t&#8220;_id&#8221; : 0,<\/p>\n\n\n\n<p>\t\t\t&#8220;host&#8221; : &#8220;192.168.191.147:27017&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;arbiterOnly&#8221; : false,<\/p>\n\n\n\n<p>\t\t\t&#8220;buildIndexes&#8221; : true,<\/p>\n\n\n\n<p>\t\t\t&#8220;hidden&#8221; : false,<\/p>\n\n\n\n<p>\t\t\t&#8220;priority&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;tags&#8221; : {<\/p>\n\n\n\n<p>\t\t\t},<\/p>\n\n\n\n<p>\t\t\t&#8220;slaveDelay&#8221; : NumberLong(0),<\/p>\n\n\n\n<p>\t\t\t&#8220;votes&#8221; : 1<\/p>\n\n\n\n<p>\t\t},<\/p>\n\n\n\n<p>\t\t{<\/p>\n\n\n\n<p>\t\t\t&#8220;_id&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;host&#8221; : &#8220;192.168.191.148:27017&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;arbiterOnly&#8221; : false,<\/p>\n\n\n\n<p>\t\t\t&#8220;buildIndexes&#8221; : true,<\/p>\n\n\n\n<p>\t\t\t&#8220;hidden&#8221; : false,<\/p>\n\n\n\n<p>\t\t\t&#8220;priority&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;tags&#8221; : {<\/p>\n\n\n\n<p>\t\t\t},<\/p>\n\n\n\n<p>\t\t\t&#8220;slaveDelay&#8221; : NumberLong(0),<\/p>\n\n\n\n<p>\t\t\t&#8220;votes&#8221; : 1<\/p>\n\n\n\n<p>\t\t},<\/p>\n\n\n\n<p>\t\t{<\/p>\n\n\n\n<p>\t\t\t&#8220;_id&#8221; : 2,<\/p>\n\n\n\n<p>\t\t\t&#8220;host&#8221; : &#8220;192.168.191.149:27017&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;arbiterOnly&#8221; : false,<\/p>\n\n\n\n<p>\t\t\t&#8220;buildIndexes&#8221; : true,<\/p>\n\n\n\n<p>\t\t\t&#8220;hidden&#8221; : false,<\/p>\n\n\n\n<p>\t\t\t&#8220;priority&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;tags&#8221; : {<\/p>\n\n\n\n<p>\t\t\t},<\/p>\n\n\n\n<p>\t\t\t&#8220;slaveDelay&#8221; : NumberLong(0),<\/p>\n\n\n\n<p>\t\t\t&#8220;votes&#8221; : 1<\/p>\n\n\n\n<p>\t\t}<\/p>\n\n\n\n<p>\t],<\/p>\n\n\n\n<p>\t&#8220;settings&#8221; : {<\/p>\n\n\n\n<p>\t\t&#8220;chainingAllowed&#8221; : true,<\/p>\n\n\n\n<p>\t\t&#8220;heartbeatIntervalMillis&#8221; : 2000,<\/p>\n\n\n\n<p>\t\t&#8220;heartbeatTimeoutSecs&#8221; : 10,<\/p>\n\n\n\n<p>\t\t&#8220;electionTimeoutMillis&#8221; : 10000,<\/p>\n\n\n\n<p>\t\t&#8220;catchUpTimeoutMillis&#8221; : 60000,<\/p>\n\n\n\n<p>\t\t&#8220;getLastErrorModes&#8221; : {<\/p>\n\n\n\n<p>\t\t},<\/p>\n\n\n\n<p>\t\t&#8220;getLastErrorDefaults&#8221; : {<\/p>\n\n\n\n<p>\t\t\t&#8220;w&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;wtimeout&#8221; : 0<\/p>\n\n\n\n<p>\t\t},<\/p>\n\n\n\n<p>\t\t&#8220;replicaSetId&#8221; : ObjectId(&#8220;5d0afcba1d434d32a01ea25f&#8221;)<\/p>\n\n\n\n<p>\t}<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>testxhrs:PRIMARY&gt; <\/p>\n\n\n\n<p>\u901a\u8fc7rs.status()\u67e5\u770b\u786e\u8ba4\u526f\u672c\u96c6\u4e3b\u8282\u70b9\uff1a<\/p>\n\n\n\n<p>testxhrs:PRIMARY&gt; rs.status()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>\t&#8220;set&#8221; : &#8220;testxhrs&#8221;,<\/p>\n\n\n\n<p>\t&#8220;date&#8221; : ISODate(&#8220;2019-06-20T03:36:28.575Z&#8221;),<\/p>\n\n\n\n<p>\t&#8220;myState&#8221; : 1,<\/p>\n\n\n\n<p>\t&#8220;term&#8221; : NumberLong(1),<\/p>\n\n\n\n<p>\t&#8220;syncingTo&#8221; : &#8220;&#8221;,<\/p>\n\n\n\n<p>\t&#8220;syncSourceHost&#8221; : &#8220;&#8221;,<\/p>\n\n\n\n<p>\t&#8220;syncSourceId&#8221; : -1,<\/p>\n\n\n\n<p>\t&#8220;heartbeatIntervalMillis&#8221; : NumberLong(2000),<\/p>\n\n\n\n<p>\t&#8220;optimes&#8221; : {<\/p>\n\n\n\n<p>\t\t&#8220;lastCommittedOpTime&#8221; : {<\/p>\n\n\n\n<p>\t\t\t&#8220;ts&#8221; : Timestamp(1561001778, 1),<\/p>\n\n\n\n<p>\t\t\t&#8220;t&#8221; : NumberLong(1)<\/p>\n\n\n\n<p>\t\t},<\/p>\n\n\n\n<p>\t\t&#8220;appliedOpTime&#8221; : {<\/p>\n\n\n\n<p>\t\t\t&#8220;ts&#8221; : Timestamp(1561001778, 1),<\/p>\n\n\n\n<p>\t\t\t&#8220;t&#8221; : NumberLong(1)<\/p>\n\n\n\n<p>\t\t},<\/p>\n\n\n\n<p>\t\t&#8220;durableOpTime&#8221; : {<\/p>\n\n\n\n<p>\t\t\t&#8220;ts&#8221; : Timestamp(1561001778, 1),<\/p>\n\n\n\n<p>\t\t\t&#8220;t&#8221; : NumberLong(1)<\/p>\n\n\n\n<p>\t\t}<\/p>\n\n\n\n<p>\t},<\/p>\n\n\n\n<p>\t&#8220;members&#8221; : [<\/p>\n\n\n\n<p>\t\t{<\/p>\n\n\n\n<p>\t\t\t&#8220;_id&#8221; : 0,<\/p>\n\n\n\n<p>\t\t\t&#8220;name&#8221; : &#8220;192.168.191.147:27017&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;health&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;state&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;stateStr&#8221; : &#8220;PRIMARY&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;uptime&#8221; : 1438,<\/p>\n\n\n\n<p>\t\t\t&#8220;optime&#8221; : {<\/p>\n\n\n\n<p>\t\t\t\t&#8220;ts&#8221; : Timestamp(1561001778, 1),<\/p>\n\n\n\n<p>\t\t\t\t&#8220;t&#8221; : NumberLong(1)<\/p>\n\n\n\n<p>\t\t\t},<\/p>\n\n\n\n<p>\t\t\t&#8220;optimeDate&#8221; : ISODate(&#8220;2019-06-20T03:36:18Z&#8221;),<\/p>\n\n\n\n<p>\t\t\t&#8220;syncingTo&#8221; : &#8220;&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;syncSourceHost&#8221; : &#8220;&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;syncSourceId&#8221; : -1,<\/p>\n\n\n\n<p>\t\t\t&#8220;infoMessage&#8221; : &#8220;&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;electionTime&#8221; : Timestamp(1561001157, 1),<\/p>\n\n\n\n<p>\t\t\t&#8220;electionDate&#8221; : ISODate(&#8220;2019-06-20T03:25:57Z&#8221;),<\/p>\n\n\n\n<p>\t\t\t&#8220;configVersion&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;self&#8221; : true,<\/p>\n\n\n\n<p>\t\t\t&#8220;lastHeartbeatMessage&#8221; : &#8220;&#8221;<\/p>\n\n\n\n<p>\t\t},<\/p>\n\n\n\n<p>\t\t{<\/p>\n\n\n\n<p>\t\t\t&#8220;_id&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;name&#8221; : &#8220;192.168.191.148:27017&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;health&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;state&#8221; : 2,<\/p>\n\n\n\n<p>\t\t\t&#8220;stateStr&#8221; : &#8220;SECONDARY&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;uptime&#8221; : 642,<\/p>\n\n\n\n<p>\t\t\t&#8220;optime&#8221; : {<\/p>\n\n\n\n<p>\t\t\t\t&#8220;ts&#8221; : Timestamp(1561001778, 1),<\/p>\n\n\n\n<p>\t\t\t\t&#8220;t&#8221; : NumberLong(1)<\/p>\n\n\n\n<p>\t\t\t},<\/p>\n\n\n\n<p>\t\t\t&#8220;optimeDurable&#8221; : {<\/p>\n\n\n\n<p>\t\t\t\t&#8220;ts&#8221; : Timestamp(1561001778, 1),<\/p>\n\n\n\n<p>\t\t\t\t&#8220;t&#8221; : NumberLong(1)<\/p>\n\n\n\n<p>\t\t\t},<\/p>\n\n\n\n<p>\t\t\t&#8220;optimeDate&#8221; : ISODate(&#8220;2019-06-20T03:36:18Z&#8221;),<\/p>\n\n\n\n<p>\t\t\t&#8220;optimeDurableDate&#8221; : ISODate(&#8220;2019-06-20T03:36:18Z&#8221;),<\/p>\n\n\n\n<p>\t\t\t&#8220;lastHeartbeat&#8221; : ISODate(&#8220;2019-06-20T03:36:28.211Z&#8221;),<\/p>\n\n\n\n<p>\t\t\t&#8220;lastHeartbeatRecv&#8221; : ISODate(&#8220;2019-06-20T03:36:28.257Z&#8221;),<\/p>\n\n\n\n<p>\t\t\t&#8220;pingMs&#8221; : NumberLong(0),<\/p>\n\n\n\n<p>\t\t\t&#8220;lastHeartbeatMessage&#8221; : &#8220;&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;syncingTo&#8221; : &#8220;192.168.191.147:27017&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;syncSourceHost&#8221; : &#8220;192.168.191.147:27017&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;syncSourceId&#8221; : 0,<\/p>\n\n\n\n<p>\t\t\t&#8220;infoMessage&#8221; : &#8220;&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;configVersion&#8221; : 1<\/p>\n\n\n\n<p>\t\t},<\/p>\n\n\n\n<p>\t\t{<\/p>\n\n\n\n<p>\t\t\t&#8220;_id&#8221; : 2,<\/p>\n\n\n\n<p>\t\t\t&#8220;name&#8221; : &#8220;192.168.191.149:27017&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;health&#8221; : 1,<\/p>\n\n\n\n<p>\t\t\t&#8220;state&#8221; : 2,<\/p>\n\n\n\n<p>\t\t\t&#8220;stateStr&#8221; : &#8220;SECONDARY&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;uptime&#8221; : 642,<\/p>\n\n\n\n<p>\t\t\t&#8220;optime&#8221; : {<\/p>\n\n\n\n<p>\t\t\t\t&#8220;ts&#8221; : Timestamp(1561001778, 1),<\/p>\n\n\n\n<p>\t\t\t\t&#8220;t&#8221; : NumberLong(1)<\/p>\n\n\n\n<p>\t\t\t},<\/p>\n\n\n\n<p>\t\t\t&#8220;optimeDurable&#8221; : {<\/p>\n\n\n\n<p>\t\t\t\t&#8220;ts&#8221; : Timestamp(1561001778, 1),<\/p>\n\n\n\n<p>\t\t\t\t&#8220;t&#8221; : NumberLong(1)<\/p>\n\n\n\n<p>\t\t\t},<\/p>\n\n\n\n<p>\t\t\t&#8220;optimeDate&#8221; : ISODate(&#8220;2019-06-20T03:36:18Z&#8221;),<\/p>\n\n\n\n<p>\t\t\t&#8220;optimeDurableDate&#8221; : ISODate(&#8220;2019-06-20T03:36:18Z&#8221;),<\/p>\n\n\n\n<p>\t\t\t&#8220;lastHeartbeat&#8221; : ISODate(&#8220;2019-06-20T03:36:28.211Z&#8221;),<\/p>\n\n\n\n<p>\t\t\t&#8220;lastHeartbeatRecv&#8221; : ISODate(&#8220;2019-06-20T03:36:28.248Z&#8221;),<\/p>\n\n\n\n<p>\t\t\t&#8220;pingMs&#8221; : NumberLong(0),<\/p>\n\n\n\n<p>\t\t\t&#8220;lastHeartbeatMessage&#8221; : &#8220;&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;syncingTo&#8221; : &#8220;192.168.191.147:27017&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;syncSourceHost&#8221; : &#8220;192.168.191.147:27017&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;syncSourceId&#8221; : 0,<\/p>\n\n\n\n<p>\t\t\t&#8220;infoMessage&#8221; : &#8220;&#8221;,<\/p>\n\n\n\n<p>\t\t\t&#8220;configVersion&#8221; : 1<\/p>\n\n\n\n<p>\t\t}<\/p>\n\n\n\n<p>\t],<\/p>\n\n\n\n<p>\t&#8220;ok&#8221; : 1<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>testxhrs:PRIMARY><\/p>\n\n\n\n<p><strong>6<\/strong><strong>\u3001\u521b\u5efa\u8d26\u53f7\uff08\u5728\u4e3b\u8282\u70b9\u4e0a\u64cd\u4f5c\uff09\uff1a<\/strong><br># .\/bin\/mongo<\/p>\n\n\n\n<p>&gt; use admin<\/p>\n\n\n\n<p># \u521b\u5efa\u7528\u6237\u7ba1\u7406\u5458\uff08\u53ef\u7ba1\u7406\u7528\u6237\u3001\u6743\u9650\uff09<\/p>\n\n\n\n<p>&gt; db.createUser({user: &#8220;admin&#8221;,pwd: &#8220;p@ssw0rd4admin&#8221;,roles: [ { role: &#8220;userAdminAnyDatabase&#8221;, db: &#8220;admin&#8221; } ]})<\/p>\n\n\n\n<p># \u521b\u5efa\u6570\u636e\u5e93\u7ba1\u7406\u5458\uff08\u53ef\u7ba1\u7406\u6570\u636e\u5e93\uff09<\/p>\n\n\n\n<p>\u5728MongoDB shell\u4e2d\u5207\u6362\u5230\u6570\u636e\u5e93admin\uff0c\u518d\u4f7f\u7528createUser\u6dfb\u52a0\u89d2\u8272\u4e3areadWriteAnyDatabase\u3001dbAdminAnyDatabase\u548cclusterAdmin\u7684\u7528\u6237\u3002\u8fd9\u8ba9\u7528\u6237\u80fd\u591f\u8bbf\u95ee\u7cfb\u7edf\u4e2d\u7684\u6240\u6709\u6570\u636e\u5e93\u3001\u521b\u5efa\u65b0\u7684\u6570\u636e\u5e93\u4ee5\u53ca\u7ba1\u7406 MongoDB \u96c6\u7fa4\u3002<\/p>\n\n\n\n<p>&gt; use admin<\/p>\n\n\n\n<p>switched to db admin<\/p>\n\n\n\n<p>&gt; db.createUser(<\/p>\n\n\n\n<p>&#8230; &nbsp;&nbsp;&nbsp;{<\/p>\n\n\n\n<p>&#8230; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user: &#8220;dbadmin&#8221;,<\/p>\n\n\n\n<p>&#8230; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pwd: &#8220;p@ssw0rd4dbadmin&#8221;,<\/p>\n\n\n\n<p>&#8230; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roles: [ &#8220;readWriteAnyDatabase&#8221;, &#8220;dbAdminAnyDatabase&#8221;,&#8221;clusterAdmin&#8221; ]<\/p>\n\n\n\n<p>&#8230; &nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&#8230; )<\/p>\n\n\n\n<p>Successfully added user: {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&#8220;user&#8221; : &#8220;dbadmin&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&#8220;roles&#8221; : [<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;readWriteAnyDatabase&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;dbAdminAnyDatabase&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;clusterAdmin&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;]<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p># \u521b\u5efa\u8d85\u7ea7\u7ba1\u7406\u5458\uff08\u53ef\u7ba1\u7406\u7528\u6237\u3001\u6743\u9650\u3001\u6570\u636e\u5e93\uff09<\/p>\n\n\n\n<p>&gt; db.createUser({&#8220;user&#8221;:&#8221;SuperAdmin&#8221;,&#8221;pwd&#8221;:&#8221;p@ssw0rd4SA&#8221;,&#8221;roles&#8221;:[&#8220;root&#8221;]});<\/p>\n\n\n\n<p>#&nbsp;\u521b\u5efa\u96c6\u7fa4\u7ba1\u7406\u5458<\/p>\n\n\n\n<p>&gt; db.createUser({&#8220;user&#8221; : &#8220;cluster&#8221;,&#8221;pwd&#8221; : &#8220;p@ssw0rd4cluster&#8221;,roles: [ { &#8220;role&#8221; : &#8220;clusterAdmin&#8221;, &#8220;db&#8221; : &#8220;admin&#8221; } ]})<\/p>\n\n\n\n<p>#\u521b\u5efa\u666e\u901a\u7528\u6237<\/p>\n\n\n\n<p>&gt; use db1;<\/p>\n\n\n\n<p>&gt; db.createUser({user:&#8221;user1&#8243;,pwd:&#8221;p@ssw0rd4user1&#8243;,roles:[{role:&#8221;dbOwner&#8221;,db:&#8221;db1&#8243;}]})<\/p>\n\n\n\n<p><strong>7\u3001<\/strong><strong>\u542f\u7528<\/strong><strong>keyfile+auth<\/strong><strong>\u8bbf\u95ee\u63a7\u5236<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>\u751f\u6210keyfile\u6587\u4ef6, \u8bbe\u7f6e\u6743\u9650\u4e3a400, \u5e76\u62f7\u8d1d\u5230\u6bcf\u4e2a\u526f\u672c\u96c6\u6210\u5458\uff1a<\/strong><strong><\/strong><\/p>\n\n\n\n<p>\u6ce8\uff1aCopy the keyfile to each server hosting the replica set members. Ensure that the user running the mongod instances is the owner of the file and can access the keyfile.<\/p>\n\n\n\n<p>cd \/usr\/local\/mongodb<br>mkdir conf<\/p>\n\n\n\n<p>openssl rand -base64 756 -out conf\/keyfile<\/p>\n\n\n\n<p>chmod 400 conf\/keyfile<\/p>\n\n\n\n<p><strong>\u5728\u6bcf\u4e2a\u526f\u672c\u96c6\u6210\u5458\u4e0a<\/strong><strong>\u4fee\u6539\u914d\u7f6e\u6587\u4ef6<\/strong><strong>\uff1a<\/strong><strong><\/strong><\/p>\n\n\n\n<p>keyFile = \/usr\/local\/mongodb\/conf\/keyfile<\/p>\n\n\n\n<p>auth = true<\/p>\n\n\n\n<p><strong>\u91cd\u65b0\u542f\u52a8\u5404\u4e2a\u8282\u70b9<\/strong><strong>\uff08<\/strong><strong>\u5148\u5173SECONDARY\uff0c\u540e\u5173PRIMARY<\/strong>\uff09<strong>\uff1a<\/strong><strong><\/strong><\/p>\n\n\n\n<p>.\/bin\/mongod -f .\/etc\/mongod.conf &#8211;shutdown<\/p>\n\n\n\n<p>.\/bin\/mongod -f .\/etc\/mongod.conf<\/p>\n\n\n\n<p><strong>8<\/strong><strong>\u3001<\/strong><strong>\u6d4b\u8bd5\u526f\u672c\u96c6\u7684\u6570\u636e\u590d\u5236\u529f\u80fd<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>\u5728\u4e3b\u8282\u70b9\u6d4b\u8bd5\u5199\u5165<\/strong><strong>\uff1a<\/strong><strong><\/strong><\/p>\n\n\n\n<p>testxhrs:PRIMARY&gt; use db1<\/p>\n\n\n\n<p>switched to db db1<\/p>\n\n\n\n<p>testxhrs:PRIMARY&gt; db.auth(&#8216;user1&#8242;,&#8217;p@ssw0rd4user1&#8217;)<\/p>\n\n\n\n<p>1<\/p>\n\n\n\n<p>testxhrs:PRIMARY&gt; db.t_user.insert({&#8220;user&#8221;: &#8220;mongodb&#8221;})<\/p>\n\n\n\n<p>WriteResult({ &#8220;nInserted&#8221; : 1 })<\/p>\n\n\n\n<p>testxhrs:PRIMARY&gt; db.t_user.find();<\/p>\n\n\n\n<p>{ &#8220;_id&#8221; : ObjectId(&#8220;5d08acb0372140acd6e68525&#8221;), &#8220;user&#8221; : &#8220;mongodb&#8221; }<\/p>\n\n\n\n<p>testxhrs:PRIMARY&gt; <\/p>\n\n\n\n<p><strong>\u5728secondary\u8282\u70b9\u6d4b\u8bd5\u67e5\u8be2\u662f\u5426\u6709\u6570\u636e\u540c\u6b65\uff1a<\/strong><strong><\/strong><\/p>\n\n\n\n<p>testxhrs:SECONDARY&gt; use db1<\/p>\n\n\n\n<p>switched to db db1<\/p>\n\n\n\n<p>testxhrs:SECONDARY&gt; db.auth(&#8216;user1&#8242;,&#8217;p@ssw0rd4user1&#8217;)<\/p>\n\n\n\n<p>1<\/p>\n\n\n\n<p>testxhrs:SECONDARY&gt; db.t_user.find()<\/p>\n\n\n\n<p>Error: error: {<\/p>\n\n\n\n<p>\t&#8220;ok&#8221; : 0,<\/p>\n\n\n\n<p>\t&#8220;errmsg&#8221; : &#8220;not master and slaveOk=false&#8221;,<\/p>\n\n\n\n<p>\t&#8220;code&#8221; : 13435,<\/p>\n\n\n\n<p>\t&#8220;codeName&#8221; : &#8220;NotMasterNoSlaveOk&#8221;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>testxhrs:SECONDARY&gt; rs.slaveOk() &nbsp;#\u9ed8\u8ba4\u60c5\u51b5\u4e0bsecondary\u662f\u4e0d\u53ef\u4ee5\u8bfb\u5199\u7684\uff0c\u9700\u8981\u6267\u884crs.slaveOk()\u624d\u53ef\u4ee5\u6267\u884c\u67e5\u770b\u547d\u4ee4<\/p>\n\n\n\n<p>\u6ce8\uff1a\u56e0\u4e3amongodb\u9ed8\u8ba4\u662f\u4ece\u4e3b\u8282\u70b9\u8bfb\u5199\u6570\u636e\u7684\uff0c\u526f\u672c\u8282\u70b9\u4e0a\u4e0d\u5141\u8bb8\u8bfb\uff0c\u9700\u8981\u8bbe\u7f6e\u526f\u672c\u8282\u70b9\u53ef\u4ee5\u8bfb\u3002<\/p>\n\n\n\n<p>testxhrs:SECONDARY&gt; db.getMongo().setSlaveOk();<\/p>\n\n\n\n<p>\u6b64\u65f6\u5c31\u53ef\u4ee5\u8bfb\u53d6\u6570\u636e\u4e86\u3002<\/p>\n\n\n\n<p>testxhrs:SECONDARY&gt; db.t_user.find()<\/p>\n\n\n\n<p>\u63a7\u5236\u53f0\u8f93\u51fa\uff1a{ &#8220;_id&#8221; : ObjectId(&#8220;5d08acb0372140acd6e68525&#8221;), &#8220;user&#8221; : &#8220;mongodb&#8221; }<\/p>\n\n\n\n<p>\u53ef\u4ee5\u770b\u51fa\u6570\u636e\u590d\u5236\u7684\u529f\u80fd\u662f\u53ef\u7528\u7684\u3002<\/p>\n\n\n\n<p><strong>9<\/strong><strong>\u3001<\/strong><strong>\u6d4b\u8bd5\u526f\u672c\u96c6\u7684\u6545\u969c\u8f6c\u79fb\u529f\u80fd<\/strong><strong><br><\/strong>\u5c06\u4e3b\u8282\u70b9192.168.191.147\u7684mongod\u8fdb\u7a0b\u6740\u6b7b\uff1a<\/p>\n\n\n\n<p>testxhrs:PRIMARY&gt; use admin<br>testxhrs:PRIMARY&gt; db.shutdownServer()<\/p>\n\n\n\n<p>\u901a\u8fc7rs.status()\u6765\u67e5\u770b\u526f\u672c\u96c6\u72b6\u6001\uff0c\u6b64\u65f6\u53ef\u4ee5\u770b\u5230\uff0c192.168.191.149\u539f\u672c\u662f\u526f\u8282\u70b9\uff0c\u73b0\u5728\u81ea\u52a8\u8f6c\u6362\u4e3a\u4e3b\u8282\u70b9\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"596\" height=\"792\" src=\"http:\/\/www.betterit360.com\/wp-content\/uploads\/2019\/11\/\u642d\u5efamongodb\u4e09\u8282\u70b9\u526f\u672c\u96c6\uff08\u542f\u7528keyfileauth\u8bbf\u95ee\u63a7\u5236\uff09_\u56fe\u72472.png\" alt=\"\" class=\"wp-image-142\"\/><\/figure>\n\n\n\n<p>10\u3001<strong>\u5ba2\u6237\u7aef\u5de5\u5177\u8fde\u63a5\u6d4b\u8bd5<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1304\" height=\"352\" src=\"http:\/\/www.betterit360.com\/wp-content\/uploads\/2019\/11\/\u642d\u5efamongodb\u4e09\u8282\u70b9\u526f\u672c\u96c6\uff08\u542f\u7528keyfileauth\u8bbf\u95ee\u63a7\u5236\uff09_\u56fe\u72473.png\" alt=\"\" class=\"wp-image-143\"\/><\/figure>\n\n\n\n<p><strong>\u9644\uff1a<\/strong><\/p>\n\n\n\n<p>1.<strong>\u67e5\u770b\u6240\u6709\u8d26\u6237 :<\/strong><\/p>\n\n\n\n<p>&gt; use admin <\/p>\n\n\n\n<p>switched to db admin <\/p>\n\n\n\n<p>&gt; db.auth(&#8216;admin&#8217;,&#8217;password&#8217;) <\/p>\n\n\n\n<p>1 <\/p>\n\n\n\n<p>&gt; <strong>db.system.users.find().pretty()<\/strong><\/p>\n\n\n\n<p><strong>2.\u67e5\u770b\u5f53\u524d\u5e93\u4e0b\u8d26\u6237 :<\/strong><\/p>\n\n\n\n<p>&gt; use admin <\/p>\n\n\n\n<p>switched to db admin <\/p>\n\n\n\n<p>&gt; <strong>show users<\/strong><strong><\/strong><\/p>\n\n\n\n<p>&gt; use test<\/p>\n\n\n\n<p>switched to db test<\/p>\n\n\n\n<p>&gt; show users<\/p>\n\n\n\n<p>3.<strong>\u4fee\u6539\u7528\u6237\u5bc6\u7801\uff1a<\/strong><\/p>\n\n\n\n<p>The following operation changes the password of the user named accountUser in the products database to SOh3TbYhx8ypJPxmt1oOfL:<\/p>\n\n\n\n<p><strong>use products<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>db.changeUserPassword(&#8220;accountUser&#8221;, &#8220;SOh3TbYhx8ypJPxmt1oOfL&#8221;)<\/strong><strong><\/strong><\/p>\n\n\n\n<p>4.<strong>\u4fee\u6539\u7528\u6237\u6743\u9650\u7b49\uff1a<\/strong><\/p>\n\n\n\n<p>Example<\/p>\n\n\n\n<p>Given a user&nbsp;appClient01&nbsp;in the&nbsp;products&nbsp;database with the following user info:<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;_id&#8221; : &#8220;products.appClient01&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;user&#8221; : &#8220;appClient01&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;products&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;customData&#8221; : { &#8220;empID&#8221; : &#8220;12345&#8221;, &#8220;badge&#8221; : &#8220;9156&#8221; },<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;roles&#8221; : [<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;readWrite&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;products&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;read&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;inventory&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;]<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>The following\u00a0db.updateUser()\u00a0method\u00a0completely\u00a0replaces the user\u2019s\u00a0customData\u00a0and\u00a0roles\u00a0data:<\/p>\n\n\n\n<p><strong>use products<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>db.updateUser( &#8220;appClient01&#8221;,<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customData : { employeeId : &#8220;0x3039&#8221; },<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roles : [<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ role : &#8220;read&#8221;, db : &#8220;assets&#8221; &nbsp;}<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<\/strong><strong><\/strong><\/p>\n\n\n\n<p>The user&nbsp;appClient01&nbsp;in the&nbsp;products&nbsp;database now has the following user information:<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;_id&#8221; : &#8220;products.appClient01&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;user&#8221; : &#8220;appClient01&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;products&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;customData&#8221; : { &#8220;employeeId&#8221; : &#8220;0x3039&#8221; },<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&#8220;roles&#8221; : [<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;read&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;assets&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;]<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>5.<strong>\u5206\u914d\u7528\u6237\u66f4\u591a\u6743\u9650\uff1a<\/strong><\/p>\n\n\n\n<p>Example<\/p>\n\n\n\n<p>Given a user&nbsp;accountUser01&nbsp;in the&nbsp;products&nbsp;database with the following roles:<\/p>\n\n\n\n<p>&#8220;roles&#8221; : [<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;assetsReader&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;assets&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>]<\/p>\n\n\n\n<p>The following\u00a0grantRolesToUser()\u00a0operation gives\u00a0accountUser01\u00a0the\u00a0readWrite\u00a0role on the\u00a0products\u00a0database and the\u00a0read\u00a0role on the\u00a0stock\u00a0database.<\/p>\n\n\n\n<p><strong>use products<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>db.grantRolesToUser(<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&#8220;accountUser01&#8221;,<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;[ &#8220;readWrite&#8221; , { role: &#8220;read&#8221;, db: &#8220;stock&#8221; } ],<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;{ w: &#8220;majority&#8221; , wtimeout: 4000 }<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>)<\/strong><strong><\/strong><\/p>\n\n\n\n<p>The user&nbsp;accountUser01&nbsp;in the&nbsp;products&nbsp;database now has the following roles:<\/p>\n\n\n\n<p>&#8220;roles&#8221; : [<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;assetsReader&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;assets&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;},<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;read&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;stock&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;},<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;readWrite&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;products&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>]<\/p>\n\n\n\n<p>6.<strong>\u64a4\u9500\u7528\u6237\u76f8\u5173\u6743\u9650\uff1a<\/strong><\/p>\n\n\n\n<p>Example<\/p>\n\n\n\n<p>The&nbsp;accountUser01&nbsp;user in the&nbsp;products&nbsp;database has the following roles:<\/p>\n\n\n\n<p>&#8220;roles&#8221; : [<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;assetsReader&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;assets&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;},<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;read&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;stock&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;},<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;readWrite&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;products&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>]<\/p>\n\n\n\n<p>The following\u00a0db.revokeRolesFromUser()\u00a0method removes the two of the user\u2019s roles: the\u00a0read\u00a0role on the\u00a0stock\u00a0database and the\u00a0readWrite\u00a0role on the\u00a0products\u00a0database, which is also the database on which the method runs:<\/p>\n\n\n\n<p><strong>use products<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>db.revokeRolesFromUser( &#8220;accountUser01&#8221;,<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ { role: &#8220;read&#8221;, db: &#8220;stock&#8221; }, &#8220;readWrite&#8221; ],<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ w: &#8220;majority&#8221; }<\/strong><strong><\/strong><\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<\/strong><strong><\/strong><\/p>\n\n\n\n<p>The user&nbsp;accountUser01&nbsp;user in the&nbsp;products&nbsp;database now has only one remaining role:<\/p>\n\n\n\n<p>&#8220;roles&#8221; : [<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;{ &#8220;role&#8221; : &#8220;assetsReader&#8221;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;db&#8221; : &#8220;assets&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u73af\u5883\u7248\u672c\uff1a CentOS Linux release 7.6.1810 (Core) mongodb-linu &hellip; <a href=\"http:\/\/www.betterit360.com\/?p=140\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201c\u642d\u5efamongodb\u4e09\u8282\u70b9\u526f\u672c\u96c6\uff08\u542f\u7528keyfile+auth\u8bbf\u95ee\u63a7\u5236\uff09\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/www.betterit360.com\/index.php?rest_route=\/wp\/v2\/posts\/140"}],"collection":[{"href":"http:\/\/www.betterit360.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.betterit360.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.betterit360.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.betterit360.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=140"}],"version-history":[{"count":0,"href":"http:\/\/www.betterit360.com\/index.php?rest_route=\/wp\/v2\/posts\/140\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.betterit360.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.betterit360.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=140"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.betterit360.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}