胜者之气之东来 發表於 2020-7-20 11:15:00

MongoDB 设置用户名密码和数据库连接

<h2>第一种方式:通过Robo设置</h2>
<p>连接mongo,在admin库下创建账号,设置账号、密码后,勾选角色。</p>
<h2><img src="https://img2020.cnblogs.com/blog/317712/202007/317712-20200720111143605-1920094495.jpg" alt="" loading="lazy"></h2>
<p>找到 MongoDB 安装目录,打开&nbsp;<code>mongod.cfg</code>文件,找到以下这句:</p>
<div class="cnblogs_code">
<pre>#security:</pre>
</div>
<p>修改为:</p>
<div class="cnblogs_code">
<pre><span>security:
authorization: enabled</span></pre>
</div>
<h3>重启 MongoDB服务</h3>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>第二种方式:通过命令设置超级管理员</h2>
<h3>设置 admin</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">use admin
db.createUser({
user: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 用户名</span>
pwd: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">123456</span><span style="color: rgba(128, 0, 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, 0, 0, 1)">roles:[{
    role: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">root</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 角色</span>
    db: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 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, 0, 0, 1)">}]
})</span></pre>
</div>
<p>设置完成,可以输入&nbsp;<code>show users</code>&nbsp;查看是否设置成功。</p>
<h3>开启验证</h3>
<p>找到 MongoDB 安装目录,打开&nbsp;<code>mongod.cfg</code>文件,找到以下这句:</p>
<div class="cnblogs_code">
<pre>#security:</pre>
</div>
<p>修改为:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">security:
authorization: enabled</span></pre>
</div>
<h3>重启 MongoDB</h3>
<p>打开任务管理器</p>
<p>找到 MongoDB 服务,右键重新启动。</p>
<p><img src="https://img2020.cnblogs.com/blog/317712/202007/317712-20200720110213427-1282080807.jpg" alt="" loading="lazy"></p>
<p>&nbsp;</p>
<p>这时,我们可以打开 powershell 连接数据库:</p>
<p>输入 mongo:</p>
<p><img src="https://img2020.cnblogs.com/blog/317712/202007/317712-20200720110453347-80411588.jpg" alt="" loading="lazy"></p>
<p>显示连接成功,但是当我们输入其他指令时,会提示没有权限:</p>
<p><img src="https://img2020.cnblogs.com/blog/317712/202007/317712-20200720110501280-1906975263.jpg" alt="" loading="lazy"></p>
<h3>登录数据库</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 方式一</span>
<span style="color: rgba(0, 0, 0, 1)">mongo
use admin
db.auth(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">123456</span><span style="color: rgba(128, 0, 0, 1)">'</span><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>
mongo admin -u admin -p <span style="color: rgba(128, 0, 128, 1)">123456</span></pre>
</div>
<p>这时候我们就可以正常访问和操作数据了。</p>
<h2>添加数据库用户</h2>
<p>我们除了可以设置数据库的超级管理员以外,还可以给每个数据库设置单独的管理员。其只有操作单独数据的一定权限。</p>
<div class="cnblogs_code">
<pre>use test<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 跳转到需要添加用户的数据库</span>
<span style="color: rgba(0, 0, 0, 1)">db.createUser({
user: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">fooadmin</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 用户名</span>
pwd: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">123456</span><span style="color: rgba(128, 0, 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, 0, 0, 1)">roles:[{
    role: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">readWrite</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 角色</span>
    db: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">test</span><span style="color: rgba(128, 0, 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, 0, 0, 1)">}]
})</span></pre>
</div>
<h2>常用命令</h2>
<div class="cnblogs_code">
<pre>show users<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 查看当前库下的用户</span>
<span style="color: rgba(0, 0, 0, 1)">
db.dropUser(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">testadmin</span><span style="color: rgba(128, 0, 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, 0, 0, 1)">
db.updateUser(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span>, {pwd: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">654321</span><span style="color: rgba(128, 0, 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, 0, 0, 1)">
db.auth(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">654321</span><span style="color: rgba(128, 0, 0, 1)">'</span>)<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 密码认证</span></pre>
</div>
<div>
<div>
<h2>MongoDB 数据库默认角色</h2>
<ol>
<li>数据库用户角色:read、readWrite</li>
<li>数据库管理角色:dbAdmin、dbOwner、userAdmin</li>
<li>集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager</li>
<li>备份恢复角色:backup、restore</li>
<li>所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、<br>
dbAdminAnyDatabase</li>
<li>超级用户角色:root</li>

</ol></div>

</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>更多细节参考官方文档</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>
<h2>备注:MongoDB连接数据库</h2>
</div>
<h3>启动 MongoDB 服务</h3>
<p>通过 shell 连接 MongoDB 服务:<span class="pln">mongo</span></p>
<p><span class="pln">使用用户 admin 使用密码 123456 连接到本地的 MongoDB 服务上:<span class="pln">mongo<span class="pun">:<span class="com">//admin:123456@localhost/</span></span></span></span></p>
<h3>更多连接实例</h3>
<p>连接本地数据库服务器,端口是默认的。</p>
<pre class="prettyprint prettyprinted"><span class="pln">mongodb<span class="pun">:<span class="com">//localhost</span></span></span></pre>
<p>使用用户名fred,密码foobar登录localhost的admin数据库。</p>
<pre class="prettyprint prettyprinted"><span class="pln">mongodb<span class="pun">:<span class="com">//fred:foobar@localhost</span></span></span></pre>
<p>使用用户名fred,密码foobar登录localhost的baz数据库。</p>
<pre class="prettyprint prettyprinted"><span class="pln">mongodb<span class="pun">:<span class="com">//fred:foobar@localhost/baz</span></span></span></pre>
<p>连接 replica pair, 服务器1为example1.com服务器2为example2。</p>
<pre class="prettyprint prettyprinted"><span class="pln">mongodb<span class="pun">:<span class="com">//example1.com:27017,example2.com:27017</span></span></span></pre>
<p>连接 replica set 三台服务器 (端口 27017, 27018, 和27019):</p>
<pre class="prettyprint prettyprinted"><span class="pln">mongodb<span class="pun">:<span class="com">//localhost,localhost:27018,localhost:27019</span></span></span></pre>
<p>连接 replica set 三台服务器, 写入操作应用在主服务器 并且分布查询到从服务器。</p>
<pre class="prettyprint prettyprinted"><span class="pln">mongodb<span class="pun">:<span class="com">//host1,host2,host3/?slaveOk=true</span></span></span></pre>
<p>直接连接第一个服务器,无论是replica set一部分或者主服务器或者从服务器。</p>
<pre class="prettyprint prettyprinted"><span class="pln">mongodb<span class="pun">:<span class="com">//host1,host2,host3/?connect=direct;slaveOk=true</span></span></span></pre>
<p>当你的连接服务器有优先级,还需要列出所有服务器,你可以使用上述连接方式。</p>
<p>安全模式连接到localhost:</p>
<pre class="prettyprint prettyprinted"><span class="pln">mongodb<span class="pun">:<span class="com">//localhost/?safe=true</span></span></span></pre>
<p>以安全模式连接到replica set,并且等待至少两个复制服务器成功写入,超时时间设置为2秒。</p>
<pre class="prettyprint prettyprinted"><span class="pln">mongodb<span class="pun">:<span class="com">//host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000</span></span></span></pre>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    <p class="note">
作者:apegu<br/>
地址:http://www.cnblogs.com/jiangqw <br/>
如果,您认为阅读这篇博客让您有些收获,不妨点击一下推荐按钮。
</p><br><br>
来源:https://www.cnblogs.com/jiangqw/p/13344028.html
頁: [1]
查看完整版本: MongoDB 设置用户名密码和数据库连接