千家信息网

MongoDB启用身份验证

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,MongoDB支持各种认证机制,以下启用独立 mongod 实例的访问控制,并使用默认身份验证机制。用户管理员启用访问控制后,请确保在 admin 数据库中拥有 userAdmin 或 userAdm
千家信息网最后更新 2025年11月07日MongoDB启用身份验证

MongoDB支持各种认证机制,以下启用独立 mongod 实例的访问控制,并使用默认身份验证机制。

用户管理员
启用访问控制后,请确保在 admin 数据库中拥有 userAdmin 或 userAdminAnyDatabase 角色的用户。该用户可以管理用户和角色,例如:创建用户,授予或撤销用户角色,以及创建或修改定义角色。 可以在启用访问控制之前或之后创建用户。如果在创建任何用户之前启用访问控制,MongoDB会提示本地主机异常,允许在管理数据库中创建用户管理员。创建后,必须作为用户管理员进行身份验证,以根据需要创建其他用户。

以下过程首先将用户管理员添加到运行无访问控制的 MongoDB 实例,然后启用访问控制。

  1. 创建用户管理员
    在管理数据库中,添加具有 userAdminAnyDatabase 角色的用户。以下在 admin 数据库中创建用户justin:

注意:创建用户的数据库(在此示例中为admin)是用户的身份验证数据库。用户将对该数据库进行身份验证,但用户可以在其他数据库中担任角色; 即用户的认证数据库不限制用户的权限。

[root@localhost bin]# pwd/opt/mongodb-3.4.6/bin[root@localhost bin]# ./mongo --port 9981MongoDB shell version v3.4.6connecting to: mongodb://127.0.0.1:9981/MongoDB server version: 3.4.6Welcome to the MongoDB shell.For interactive help, type "help".For more comprehensive documentation, see    http://docs.mongodb.org/Questions? Try the support group    http://groups.google.com/group/mongodb-userServer has startup warnings: 2017-12-20T00:45:44.490+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.2017-12-20T00:45:44.490+0800 I CONTROL  [initandlisten] > use adminswitched to db admin> db.createUser(               #回车... {                                    #回车,下同... user:"justin",... pwd:"51cto",... roles:[{role:"userAdminAnyDatabase",db:"admin"}]... }... )Successfully added user: {    "user" : "justin",    "roles" : [        {            "role" : "userAdminAnyDatabase",            "db" : "admin"        }    ]}> exitbye[root@localhost bin]# 

  1. 修改mongodb配置文件,启用认证
    [root@localhost bin]# cat ../conf/mongodb.conf bind_ip = 0.0.0.0port = 9981fork = truedbpath = /opt/mongodb-3.4.6/datapidfilepath = /var/run/mongod.pidlogpath = /opt/mongodb-3.4.6/logs/mongod.loglogappend = trueauth = true[root@localhost bin]# systemctl restart mongodb.service[root@localhost bin]# 
3. 以用户管理员身份进行连接和验证在连接期间进行身份验证,使用-u ,-p 和--authenticationDatabase 连接后验证,切换到身份验证数据库(在这种情况下为admin),并使用db.auth()方法进行身份验证

[root@localhost bin]# ./mongo --port 9981 -u "justin" -p "51cto" --authenticationDatabase "admin"
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:9981/
MongoDB server version: 3.4.6

exit
bye
[root@localhost bin]# ./mongo --port 9981
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:9981/
MongoDB server version: 3.4.6
use admin
switched to db admin
db.auth("justin","51cto")
1
exit
bye
[root@localhost bin]#

4. 根据需要创建其他用户当管理员用户进行身份验证通过之后,可使用db.createUser()创建其他用户。可以为用户分配任何内置角色或用户定义的角色。

myUserAdmin用户只具有管理用户和角色的权限。如果使用myUserAdmin尝试执行任何其他操作,例如从ywbz数据库中的foo集合读取数据,MongoDB将返回错误。

以下操作将用户 csdp添加到在ywbz数据库中并给予ywbz数据库的readWrite角色以及在reporting数据库中读取角色。

注意:创建用户的数据库(在本示例中为ywbz)是该用户的身份验证数据库。虽然用户将对该数据库进行身份验证,但用户可以在其他数据库中担任角色; 即用户的认证数据库不会限制用户的权限。

[root@localhost bin]# ./mongo --port 9981 -u "justin" -p "51cto" --authenticationDatabase "admin"MongoDB shell version v3.4.6connecting to: mongodb://127.0.0.1:9981/MongoDB server version: 3.4.6> use ywbzswitched to db ywbz> db.createUser(... {... user:"csdp",... pwd:"51cto",... roles:[{role:"readWrite",db:"ywbz"},      #用户csdp在数据库ywbz中执行读写操作权限... {role:"read",db:"reporting"}]                 #用户csdp在数据库reporting中有读操作权限... }... )Successfully added user: {    "user" : "csdp",    "roles" : [        {            "role" : "readWrite",            "db" : "ywbz"        },        {            "role" : "read",            "db" : "reporting"        }    ]}> exitbye[root@localhost bin]# 

用户 数据 数据库 验证 角色 身份 管理 管理员 控制 权限 认证 实例 将对 机制 示例 中创 限制 主机 情况 文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 go语言实现的数据库 vs数据库连接查询修改 为什么网络会自动切换到服务器 安微易九网络技术有限公司 上海先锋网络技术有限公司 服务器部署需要固定ip吗 birds200 数据库 高校信息网络安全建设成就 黄浦区项目软件开发质量服务 服务外包c语言软件开发 数据库表 自由表 通达数据库连接错误10061 无线网络安全国外研究现状 顺丰软件开发类怎么样 云端数据库是网络数据库吗 中职计算机网络技术专业教学成果 网站怎么插入数据库 戴尔服务器blos管理界面 扫黑除恶之网络安全 实现网络安全如何破题 南通海门区城北幼儿园网络安全 计算机网络技术的发展前景 服务器管理员怎么修改密码 网络安全的导语 大学学生网络安全教育座谈会 电骡服务器列表 苍南网络安全部门电话 个人网络安全存在的问题 数据库 表关系 青岛万盛网络技术有限公司图片
0