博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB启用身份验证
阅读量:7096 次
发布时间:2019-06-28

本文共 3523 字,大约阅读时间需要 11 分钟。

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]#

MongoDB启用身份验证

  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]#

MongoDB启用身份验证

转载于:https://blog.51cto.com/ityunwei2017/2052443

你可能感兴趣的文章
对话框
查看>>
迁移SQL SERVER 数据库实例
查看>>
HttpClient工具类v1.7
查看>>
Sqlite中使用rowid来表示行号,用于分页。
查看>>
HDU 4916 树形dp
查看>>
远程数据库迁移数据
查看>>
ZH奶酪:LAMP环境中如何重新部署一个Yii2.0 web项目
查看>>
一些有用的java 框架
查看>>
访问不了firefox附加组件页面怎么办
查看>>
Docker image 镜像介绍
查看>>
Java线程池
查看>>
ArrayList,LinkedList,Vector,Stack之间的区别
查看>>
Freemarker常用技巧(二)
查看>>
2.C#中通过委托Func消除重复代码
查看>>
[转] 基于PHP Stream Wrapper开发有趣应用场景
查看>>
JS获取屏幕大小
查看>>
hdu2222-Keywords Search 【AC自动机】
查看>>
Jsp使用HttpSessionBindingListener实现在线人数记录
查看>>
SQL中的等号、IN、LIKE三者的比较
查看>>
JSPatch 成长之路
查看>>