`

【转】MongoDB:用户认证

 
阅读更多

MongoDB 安装后默认不启用认证,也就是说在本地可以通过 mongo 命令不输入用户名密码,
直接登陆到数据库,下面介绍下启用 mongodb 用户认证,详细如下:

      启用 mongodb 认证只需要在启动 mongod 服务时配置 auth 参数成 'true'即可可 ,在配置
参数前先添加超级用户。


一 启用认证
--1.1 增加管理用户

 

 > use admin;
switched to db admin

> db.addUser('root','123456');
{
        "user" : "root",
        "readOnly" : false,
        "pwd" : "34e5772aa66b703a319641d42a47d696",
        "_id" : ObjectId("50ad456a0b12589bdc45cf92")
}

> db.system.users.find();
{ "_id" : ObjectId("50ad6ecda579c47efacf811b"), "user" : "root", "readOnly" : false, "pwd" : "34e5772aa66b703a319641d42a47d696" }

   备注:在 admin 库中增加的用户为超级用户,权限最大,可以访问所有库。


--1.2 增加普通用户

 

 > use skytf;
switched to db skytf

> db.addUser('skytf','skytf');
{
        "user" : "skytf",
        "readOnly" : false,
        "pwd" : "8c438fc9e2031577cea03806db0ee137",
        "_id" : ObjectId("50ad45dd0b12589bdc45cf93")
}

> db.system.users.find();
{ "_id" : ObjectId("50ad6ef3a579c47efacf811c"), "user" : "skytf", "readOnly" : false, "pwd" : "8c438fc9e2031577cea03806db0ee137" }

   

--1.3 配置 auth 参数
vim /database/mongodb/data/mongodb_27017.conf,增加 " auth = true ” 参数

 

 fork = true
bind_ip = 127.0.0.1
port = 27017
quiet = true
dbpath = /database/mongodb/data/
logpath = /var/applog/mongo_log/mongo.log
logappend = true
journal = true
auth = true

    备注:增加 “auth = true” 配置。


--1.4 重启 mongodb

 

 [mongo@redhatB data]$ ps -ef | grep mongo
root     10887 10859  0 04:47 pts/0    00:00:00 su - mongo
mongo    10889 10887  0 04:47 pts/0    00:00:00 -bash
root     10984 10964  0 04:53 pts/1    00:00:00 su - mongo
mongo    10986 10984  0 04:53 pts/1    00:00:00 -bash
mongo    12749     1  0 07:54 ?        00:00:01 mongod -f /database/mongodb/data/mongodb_27017.conf
mongo    13035 10986 13 08:21 pts/1    00:00:00 ps -ef
mongo    13036 10986  0 08:21 pts/1    00:00:00 grep mongo

[mongo@redhatB data]$ kill 12749

[mongo@redhatB data]$ mongod -f /database/mongodb/data/mongodb_27017.conf
forked process: 13042
all output going to: /var/applog/mongo_log/mongo.log

   


--1.5 测试 skytf 帐号

 

 [mongo@redhatB data]$ mongo 127.0.0.1/skytf -u skytf -p
MongoDB shell version: 2.2.1
Enter password:
connecting to: 127.0.0.1/skytf
Error: { errmsg: "auth fails", ok: 0.0 }
Thu Nov 22 08:23:11 uncaught exception: login failed
exception: login failed

[mongo@redhatB data]$ mongo 127.0.0.1/skytf -u skytf -p
MongoDB shell version: 2.2.1
Enter password:
connecting to: 127.0.0.1/skytf

> show collections;
system.indexes
system.users
test_1
test_2
test_3
test_4
things
things_1

> db.test_5.find();
{ "_id" : ObjectId("50ad7177d114dcf18a8bb220"), "id" : 1 }

> show dbs;
Thu Nov 22 08:24:03 uncaught exception: listDatabases failed:{ "errmsg" : "need to login", "ok" : 0 }

> use test;
switched to db test

> show collections;
Thu Nov 22 09:01:32 uncaught exception: error: {
        "$err" : "unauthorized db:test ns:test.system.namespaces lock type:0 client:127.0.0.1",
        "code" : 10057

   
    备注:从上看出, skytf 用户的认证已生效,并且能查看数据库 skytf 里的集合,但不能执行 “show dbs”
              命令;并且能连接数据库 test ,但没有权限执行“show collections” 命令。

 

二 切换用户
--2.1 在普通库中切换成 root 用户

 

 > use test;
switched to db test

> db.auth('root','123456');db.auth('root','123456');
Error: { errmsg: "auth fails", ok: 0.0 }
0

      备注:在普通库中切换成超级用户失败,超级用户需要在 admin 库中切换才能生效。
   

--2.2 在 admin 库中切换成 root 用户

 

 > use admin;
switched to db admin


> db.auth('root','123456');
1

      备注:在 admin 库中切换成超级用户成功。
  


三 新增只读帐号
--3.1 增加只读帐号

 

 > db.addUser('skytf_select','skytf_select',true);
{
        "user" : "skytf_select",
        "readOnly" : true,
        "pwd" : "e344f93a69f20ca9f3dfbc40da4a3082",
        "_id" : ObjectId("50ad71c7d114dcf18a8bb221")
}

> db.system.users.find();db.system.users.find();
{ "_id" : ObjectId("50ad6ef3a579c47efacf811c"), "user" : "skytf", "readOnly" : false, "pwd" : "8c438fc9e2031577cea03806db0ee137" }
{ "_id" : ObjectId("50ad71c7d114dcf18a8bb221"), "user" : "skytf_select", "readOnly" : true, "pwd" : "e344f93a69f20ca9f3dfbc40da4a3082" }

    备注:只需在 addUser 命令中增加第三个参数,并指定为“true” ,即可创建只读帐号。   


--3.2 测试

 

 [mongo@redhatB data]$ mongo 127.0.0.1/skytf -u skytf_select -p
MongoDB shell version: 2.2.1
Enter password:
connecting to: 127.0.0.1/skytf

> show collections;
system.indexes
system.users
test_1
test_2
test_3
test_4
test_5
things
things_1

> db.test_5.find();
{ "_id" : ObjectId("50ad7177d114dcf18a8bb220"), "id" : 1 }
{ "_id" : ObjectId("50ad724ed114dcf18a8bb222"), "id" : 2 }

> db.test_5.save({id:3});
unauthorized

   

    备注:以只读帐号 skytf_select 登陆库 skytf,有权限执行查询操作,没有权限执行插入操作;

 

四 附 命令参考

--4.1 db.addUser

 

Parameters:


username (string) – Specifies a new username.
password (string) – Specifies the corresponding password.
readOnly (boolean) – Optional. Restrict a user to read-privileges only. Defaults to false.


Use this function to create new database users, by specifying a username and password as arguments
to the command. If you want to restrict the user to have only read-only privileges, supply a true third
argument; however, this defaults to false。

 

--4.2 db.auth
Parameters:


username (string) – Specifies an existing username with access privileges for this database.
password (string) – Specifies the corresponding password.

 Allows a user to authenticate to the database from within the shell. Alternatively use mongo
 --username and --password to specify authentication credentials.


五 参考
http://docs.mongodb.org/manual/tutorial/control-access-to-mongodb-with-authentication/
http://docs.mongodb.org/manual/administration/security/
http://blog.163.com/dazuiba_008/blog/static/36334981201110311534143/

 

转自 http://francs3.blog.163.com/blog/static/405767272012102331445410/

分享到:
评论

相关推荐

    MongoDB权威指南中文版高清版带书签PDF

    9. **安全与认证**:书中详细介绍了MongoDB的权限控制、用户认证和角色管理,确保数据库系统的安全性。 10. **备份与恢复**:MongoDB提供了多种备份策略,包括 mongodump 和 mongorestore 工具,以及云备份选项。...

    Linux下安装MongoDB复制集+用户认证,与Spring集成操作

    接下来,我们谈谈**MongoDB用户认证**。用户认证是保护数据库免受未经授权访问的重要措施。在MongoDB中,可以在特定的数据库下创建用户,并分配相应的角色,如`readWrite`、`dbAdmin`等。 1. **创建用户**:在...

    mongodb的c++连接接口

    8. **安全注意事项**:在实际应用中,确保正确处理用户输入,防止 SQL 注入攻击,并且考虑使用认证和授权来保护数据库的安全。 通过理解并掌握这些知识点,你就可以使用提供的压缩包文件开始在 C++ 项目中集成 ...

    liunux centos系统mongodb3.2.0的压缩包

    6. 数据安全与认证: MongoDB 3.2 引入了对用户身份验证和角色管理的支持。在生产环境中,强烈建议启用身份验证。可以使用 `mongo` shell 创建管理员用户,然后为其他用户分配角色。例如: ``` use admin db....

    MongoDB的安装(详细教程)

    MongoDB支持用户认证和角色管理,以保护数据库安全。你可以通过`db.createUser()`创建用户,并指定相应的角色(如读写权限)。配置文件中的`security`部分可以启用身份验证。 ### 7. 复制集和分片 复制集提供数据...

    spring-security-mongodb:Spring Security MongoDB扩展

    在结合MongoDB时,Spring Security MongoDB 扩展提供了一种整合Spring Security与NoSQL数据库MongoDB的方式,使得用户管理、权限控制等安全功能能够顺利地应用于使用MongoDB存储数据的应用程序。 首先,让我们深入...

    The.Definitive.Guide.to.MongoDB.pdf

    6. **安全性**:讲解了MongoDB的安全机制,包括用户认证、权限控制和加密传输,确保数据的安全和隐私。 ### 目标读者群 《MongoDB:终极指南》适合不同层次的MongoDB使用者,包括初学者、开发人员、数据库管理员和...

    php-mongodb:如何使用MongoDB创建博客

    在实际项目中,你可能还需要考虑分页、评论功能、用户认证和授权等。分页可以使用`skip()`和`limit()`方法来实现;评论可以创建另一个`comments`集合,关联到每篇文章;用户认证通常涉及到注册、登录和权限控制,这...

    mongoCertification:Mongodb认证

    4. 加入社区论坛,与其他MongoDB用户交流经验,分享问题和解决方案。 5. 实际操作MongoDB,理论结合实践是最好的学习方式。 总之,MongoDB认证对于希望在大数据、云计算和NoSQL领域发展的人来说是一块重要的敲门砖...

    learning-mongoDB:使用 Express 学习 MongoDB 的存储库

    Express会接收到POST请求,然后调用一个中间件函数,该函数会将请求体中的JSON数据转换为用户对象,并使用MongoDB的`insertOne()`或`insertMany()`方法将其存入数据库。同时,还可以创建其他路由来获取用户信息、...

    MongoDB安装包

    在实际应用中,还需要考虑MongoDB的安全性,包括设置用户认证、网络访问控制、数据加密以及定期备份与恢复策略。理解这些核心概念和操作将有助于你更好地利用MongoDB构建和管理高效的数据存储解决方案。

    centos7下mongodb4.0.6分片集群搭建(psa)-用户认证关键问题汇总

    公司单节点升级到分片下,搜索了一圈大多数MongoDB集群的部署方案都是分片+副本集,...内容包含复制集+分片的搭建 ,用户访问控制,windows转linux 单节点加入到复制集,进入到分片的操作,非常完备的配置及其说明。

    MongoDB安装资源(4.2.0版本和4.0.7版本).rar

    - 安全性:包括用户认证、角色权限和网络安全策略。 在日常运维中,定期备份、监控性能、优化查询以及合理规划数据结构都是非常关键的。MongoDB提供了丰富的命令行工具和管理选项,通过持续学习和实践,可以充分...

    node-red-contrib-mongodb:MongoDB for Node-Red

    在Node-Red中使用这个插件,用户可以方便地在流程中添加对MongoDB的操作,例如读取、写入、更新和删除数据。 在安装了`node-red-contrib-mongodb`后,你可以通过以下步骤来利用它: 1. **配置MongoDB节点**:在...

    MongoDb db.createUser用户权限

    MongoDB 3.6 之后,建议使用 `createUser` 的 `pwd` 参数配合 ` scram-sha-256` 认证机制。 - `customData`: 可选参数,可以存储关于用户的一些自定义信息。 - `roles`: 必填参数,指定用户的角色。角色决定了用户对...

    jwt-express-mongodb:使用Express和mongodb的TypeScript中的JWT身份验证示例

    在IT行业中,安全是Web应用开发的一个重要环节,特别是在...通过研究这个"jwt-express-mongodb"项目,开发者可以学习如何在实际项目中实现安全的身份验证机制,这对于任何需要用户认证的Web应用都是必不可少的技能。

    sfeir-school-mongodb:MongoDB Sfeir学校

    MongoDB Sfeir学校是一个专为学习MongoDB而设立的教育资源,旨在帮助用户掌握NoSQL数据库领域的核心概念和技能。MongoDB是一种流行的开源、分布式文档型数据库,它以JSON格式存储数据,支持高可用性和弹性扩展。在这...

    MongoDB 连接

    MongoDB Compass是一款图形用户界面工具,它允许用户可视化数据、执行查询、管理数据库和集群,以及进行性能分析。它大大简化了对MongoDB数据库的操作和管理。 在实际应用中,连接配置可能会包含认证、SSL/TLS加密...

Global site tag (gtag.js) - Google Analytics