<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=MongoDB%E5%AE%89%E5%85%A8%E8%AE%A4%E8%AF%81</id>
	<title>MongoDB安全认证 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=MongoDB%E5%AE%89%E5%85%A8%E8%AE%A4%E8%AF%81"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=MongoDB%E5%AE%89%E5%85%A8%E8%AE%A4%E8%AF%81&amp;action=history"/>
	<updated>2026-04-17T11:58:30Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=MongoDB%E5%AE%89%E5%85%A8%E8%AE%A4%E8%AF%81&amp;diff=663&amp;oldid=prev</id>
		<title>Evan：​/* 1.设置mongodb的用户名和密码(管理员): */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=MongoDB%E5%AE%89%E5%85%A8%E8%AE%A4%E8%AF%81&amp;diff=663&amp;oldid=prev"/>
		<updated>2022-04-22T06:25:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;1.设置mongodb的用户名和密码(管理员):&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=MongoDB权限介绍=&lt;br /&gt;
3.x之前如此  3.x这后的呢 pi3的版本是 &lt;br /&gt;
&lt;br /&gt;
c.1 MongoDB是没有默认管理员账号的，所以要先添加管理员账号，在开启权限认证。&lt;br /&gt;
&lt;br /&gt;
c.2 切换到admin数据库，添加的账号才是管理员的账号。&lt;br /&gt;
&lt;br /&gt;
c.3 用户只能在用户所在的数据库登录，包括管理员账号。&lt;br /&gt;
&lt;br /&gt;
c.4 管理员可以管理所有的数据库，但是不能直接管理其它数据库，要先在admin数据库中认证才可以，也是为了 安全性考虑。&lt;br /&gt;
&lt;br /&gt;
=mongodb简单开启安全验证=&lt;br /&gt;
==1.设置mongodb的用户名和密码(管理员)==&lt;br /&gt;
mongodb默认是没有用户名和密码的,我们安装好mongodb的客户端,在本地连接本地客户端的mongodb时,直接就&amp;quot;mongo&amp;quot;就可以了,默认是127.0.0.1,默认监听27017端口,不需要什么安全验证,那如何来开启安全验证呢?&lt;br /&gt;
&lt;br /&gt;
如果要开启安全验证,就必须要用--auth来开启安全性的检查,创建的用户名都是存放在system.admin.Users下面的&lt;br /&gt;
&lt;br /&gt;
===1.设置mongodb的用户名和密码(管理员):===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oct 26  2021&lt;br /&gt;
创建管理员:&lt;br /&gt;
&lt;br /&gt;
use admin&lt;br /&gt;
#添加管理员&lt;br /&gt;
db.createUser({user:&amp;quot;root&amp;quot;,pwd:&amp;quot;123456&amp;quot;,roles:[&amp;quot;root&amp;quot;]}) &lt;br /&gt;
&lt;br /&gt;
然后重新启动mongodb,但是必须加上--auth选项,&lt;br /&gt;
mongod --auth  --dbpath /data/apps/mongodb/data/   &lt;br /&gt;
&lt;br /&gt;
或者在sysd 启动文件加 &lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=mongodb&lt;br /&gt;
Group=mongodb&lt;br /&gt;
EnvironmentFile=-/etc/default/mongod&lt;br /&gt;
#by evan&lt;br /&gt;
#ExecStart=/usr/bin/mongod   --config /etc/mongod.conf&lt;br /&gt;
ExecStart=/usr/bin/mongod --auth  --config /etc/mongod.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#2022  centos7  最终如下 &lt;br /&gt;
Environment=&amp;quot;OPTIONS=-f /etc/mongod.conf&amp;quot;&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/mongod&lt;br /&gt;
ExecStart=/usr/bin/mongod  --auth  $OPTIONS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl restart   mongod&lt;br /&gt;
&lt;br /&gt;
或者使用配置文件，增加参数：  &lt;br /&gt;
security:&lt;br /&gt;
  authorization: enabled //冒号后面需要空一格&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全验证检查开启成功了,此时你应该这样连接:&lt;br /&gt;
mongo admin -u root -p 123456 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.针对某个数据库(database)建立用户(权限:read,readWrite,write)===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a.创建用户(如果不选中对应的数据库use foobar,那么你创建的用户认证会不成功,也无法登陆mongo):&lt;br /&gt;
给foobar数据库一个用户root read权限 &lt;br /&gt;
use foobar&lt;br /&gt;
db.createUser({&lt;br /&gt;
user: &amp;#039;root&amp;#039;,&lt;br /&gt;
pwd: &amp;#039;123456&amp;#039;,&lt;br /&gt;
roles: [{role: &amp;#039;read&amp;#039;, db: &amp;#039;foobar&amp;#039;}]&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
b.认证db.auth(&amp;quot;user&amp;quot;,&amp;quot;pwd&amp;quot;)--也必须选中对应的数据库use foobar,因为我上面选中了,所以直接就认证,出现1表示认证成功&lt;br /&gt;
&lt;br /&gt;
&amp;gt; db.auth(&amp;quot;root&amp;quot;, &amp;quot;123456&amp;quot;);&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
c.接下来重启mongo,使用刚才创建的用户登陆,验证权限&lt;br /&gt;
mongo foobar -u root -p 123456&lt;br /&gt;
&lt;br /&gt;
[root@work2 ~]# mongo foobar -u root -p 123456&lt;br /&gt;
MongoDB shell version: 3.2.0&lt;br /&gt;
connecting to: foobar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=MongoDB 用户和身份验证=&lt;br /&gt;
内容和上面有点重复&lt;br /&gt;
创建用户管理员账户&lt;br /&gt;
&lt;br /&gt;
2.1 创建用户管理员账户&lt;br /&gt;
当前数据库版本：Mongodb 3.4&lt;br /&gt;
&lt;br /&gt;
使用 mongod 启动数据库&lt;br /&gt;
&lt;br /&gt;
mongod --port 27017 --dbpath /data/db1&lt;br /&gt;
参数默认可以不加，若有自定义参数，才要加上，下同。&lt;br /&gt;
&lt;br /&gt;
另起一个终端，运行下列命令&lt;br /&gt;
&lt;br /&gt;
mongo --port 27017&lt;br /&gt;
&lt;br /&gt;
use admin&lt;br /&gt;
db.createUser(&lt;br /&gt;
  {&lt;br /&gt;
    user: &amp;quot;adminUser&amp;quot;,&lt;br /&gt;
    pwd: &amp;quot;adminPass&amp;quot;,&lt;br /&gt;
    roles: [ { role: &amp;quot;userAdminAnyDatabase&amp;quot;, db: &amp;quot;admin&amp;quot; } ]&lt;br /&gt;
  }&lt;br /&gt;
)&lt;br /&gt;
管理员创建成功，现在拥有了用户管理员&lt;br /&gt;
用户名：adminUser&lt;br /&gt;
密码：adminPass&lt;br /&gt;
然后，断开 mongodb 连接， 关闭数据库&lt;br /&gt;
两个终端下 &amp;lt;C - c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.2 Mongodb 用户验证登陆&lt;br /&gt;
启动带访问控制的 Mongodb&lt;br /&gt;
新建终端&lt;br /&gt;
&lt;br /&gt;
mongod --auth --port 27017 --dbpath /data/db1&amp;lt;/pre&amp;gt;&lt;br /&gt;
==现在有两种方式进行用户身份的验证==&lt;br /&gt;
===第一种 （类似 MySql）===&lt;br /&gt;
客户端连接时，指定用户名，密码，db名称&lt;br /&gt;
&lt;br /&gt;
 mongo --port 27017 -u &amp;quot;adminUser&amp;quot; -p &amp;quot;adminPass&amp;quot; --authenticationDatabase &amp;quot;admin&amp;quot;&lt;br /&gt;
===第二种===&lt;br /&gt;
&amp;lt;pre&amp;gt;客户端连接后，再进行验证&lt;br /&gt;
&lt;br /&gt;
mongo --port 27017&lt;br /&gt;
&lt;br /&gt;
use admin&lt;br /&gt;
db.auth(&amp;quot;adminUser&amp;quot;, &amp;quot;adminPass&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
// 输出 1 表示验证成功&lt;br /&gt;
&lt;br /&gt;
2.3 创建普通用户&lt;br /&gt;
过程类似创建管理员账户，只是 role 有所不同&lt;br /&gt;
use foo&lt;br /&gt;
&lt;br /&gt;
db.createUser(&lt;br /&gt;
  {&lt;br /&gt;
    user: &amp;quot;simpleUser&amp;quot;,&lt;br /&gt;
    pwd: &amp;quot;simplePass&amp;quot;,&lt;br /&gt;
    roles: [ { role: &amp;quot;readWrite&amp;quot;, db: &amp;quot;foo&amp;quot; },&lt;br /&gt;
             { role: &amp;quot;read&amp;quot;, db: &amp;quot;bar&amp;quot; } ]&lt;br /&gt;
  }&lt;br /&gt;
)&lt;br /&gt;
现在我们有了一个普通用户&lt;br /&gt;
用户名：simpleUser&lt;br /&gt;
密码：simplePass&lt;br /&gt;
权限：读写数据库 foo， 只读数据库 bar。&lt;br /&gt;
创建某个数据库的允许访问账号&lt;br /&gt;
mongo&lt;br /&gt;
use admin&lt;br /&gt;
db.getSiblingDB(&amp;quot;spring_boot_test&amp;quot;).createUser({&amp;quot;user&amp;quot; : &amp;quot;liang&amp;quot;,&amp;quot;pwd&amp;quot; : &amp;quot;hahaha&amp;quot;, roles: [{&amp;quot;role&amp;quot; : &amp;quot;readWrite&amp;quot;, &amp;quot;db&amp;quot; : &amp;quot;spring_boot_test&amp;quot;}]})&lt;br /&gt;
&lt;br /&gt;
用这个账号登录&lt;br /&gt;
&lt;br /&gt;
mongo  -u liang -password test2 -authenticationDatabase spring_boot_test &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注意&lt;br /&gt;
NOTE&lt;br /&gt;
WARN&lt;br /&gt;
use foo表示用户在 foo 库中创建，就一定要 foo 库验证身份，即用户的信息跟随随数据库。比如上述 simpleUser 虽然有 bar 库的读取权限，但是一定要先在 foo 库进行身份验证，直接访问会提示验证失败。&lt;br /&gt;
&lt;br /&gt;
use foo&lt;br /&gt;
db.auth(&amp;quot;simpleUser&amp;quot;, &amp;quot;simplePass&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
use bar&lt;br /&gt;
show collections&lt;br /&gt;
还有一点需要注意，如果 admin 库没有任何用户的话，即使在其他数据库中创建了用户，启用身份验证，默认的连接方式依然会有超级权限&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=2.4 内建角色=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read：允许用户读取指定数据库&lt;br /&gt;
readWrite：允许用户读写指定数据库&lt;br /&gt;
dbAdmin：允许用户在指定数据库中执行管理函数，如索引创建、删除，查看统计或访问system.profile&lt;br /&gt;
userAdmin：允许用户向system.users集合写入，可以找指定数据库里创建、删除和管理用户&lt;br /&gt;
clusterAdmin：只在admin数据库中可用，赋予用户所有分片和复制集相关函数的管理权限。&lt;br /&gt;
readAnyDatabase：只在admin数据库中可用，赋予用户所有数据库的读权限&lt;br /&gt;
readWriteAnyDatabase：只在admin数据库中可用，赋予用户所有数据库的读写权限&lt;br /&gt;
userAdminAnyDatabase：只在admin数据库中可用，赋予用户所有数据库的userAdmin权限&lt;br /&gt;
dbAdminAnyDatabase：只在admin数据库中可用，赋予用户所有数据库的dbAdmin权限。&lt;br /&gt;
root：只在admin数据库中可用。超级账号，超级权限&lt;br /&gt;
2.5 URI 形式的访问&lt;br /&gt;
生产中常用 URI 形式对数据库进行连接&lt;br /&gt;
&lt;br /&gt;
mongodb://your.db.ip.address:27017/foo&lt;br /&gt;
添加用户名密码验证&lt;br /&gt;
&lt;br /&gt;
mongodb://simpleUser:simplePass@your.db.ip.address:27017/foo  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=see also=&lt;br /&gt;
[https://blog.csdn.net/jeanette_zlj/article/details/79563954 MongoDB开启安全认证]&lt;br /&gt;
&lt;br /&gt;
[[category:nosql]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>