作者:虚线老母阳 | 来源:互联网 | 2024-10-30 12:57
在使用关系型数据库时,通常需要通过用户名和密码进行身份验证才能访问数据。然而,MongoDB默认情况下并不强制要求这种身份验证机制,使得用户无需凭据即可访问并执行各种操作。虽然这一设计简化了初学者的上手过程,但也带来了显著的安全风险。为了提升MongoDB的连接安全性,本文将探讨多种策略与实践,包括启用身份验证、配置网络访问控制、加密通信以及定期审计安全设置,以确保数据库的安全性和数据的完整性。
以前,在使用关系型数据库时,没有用户名和密码我们是不能访问数据的。但是在MongDB中,默认不需要使用用户名和密码就可以访问数据库,并且可以进行各种操作。这样是虽然利于初学者,但是很不安全的。所以,今天说一下MongDB的连接安全问题。
首先,之所以能够不使用用户名和密码就能连接,是因为我们在启动MongoDB服务的时候,没有设置权限认证。
1、不用用户名和密码就能访问的启动方式:
mongod --dbpath c:\mongo_data --logpath c:\mongo\logs\logs.txt
只需要给出--dbpath和logpath即可
2、需要用户名和密码的启动方式:
mongod--dbpath c:\mongo_data --logpath c:\mongo\logs\logs.txt -auth
需要加上
-auth(cateauthentication
认证的意思)
想要使用用户名和密码登陆,就必须有用户名和密码,而我们要在哪里设置用户名和密码呢?
首先以非认证方式(不需要用户名和密码)登陆系统,然后我们可以看到默认系统给出了几个库,其中有localhost和
admin,当然我们也可以新建库。
每个库都有自己的用户表,admin库的用户拥有其他的所有权限。所以,初学阶段我们使用在admin库中添加用户,真正使
用的时候,使用各个库自己的用户。
添加用户图片
两种不同的连接数据库方式
1、不使用用户名和密码:
Mongo m = new Mongo("localhost",27017);
//默认访问本地的27017端口
2、使用用户名和密码:
Mongo m = new Mongo("localhost",27017);
booleanauth = db.authenticate(userName, password);
通过这样的方式,我们大概了解了如何让自己的MongoDB连接变得安全。后续会介绍MongDB的使用连接池的相关内容来了解高效连接。