Mongodb是一种非常流行的NoSQL数据库,其具有可扩展性和高性能的特点。对于一些安全敏感的应用程序,开启用户访问控制是非常必要的。下面将详细介绍如何开启Mongodb的用户访问控制。
步骤一:修改Mongodb的配置文件
首先,打开Mongodb的配置文件mongod.conf。该文件通常位于/etc/mongod.conf路径下(具体路径可能因系统而异)。
vim /etc/mongod.conf
在该文件中添加以下配置:
security:
authorization: enabled
其中,security.authorization参数用于启用用户访问控制功能。
步骤二:创建管理员用户
在开启用户访问控制之前,必须先创建一个管理员用户。该用户将被用于管理和创建其他用户。
首先,进入mongo shell:
mongo
在mongo shell中,使用以下命令创建管理员用户:
use admin
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "root", db: "admin" } ]
}
)
其中,user参数指定用户名,pwd参数指定密码,roles参数指定该用户在哪个数据库具有管理权限。在这里,我们将管理员权限指定为root,并且将其限定在admin数据库中。
步骤三:创建普通用户
现在,我们可以使用管理员用户创建其他普通用户。以下是一个简单的示例。
首先,我们可以使用管理员用户登录到mongo shell:
mongo -u admin -p password --authenticationDatabase admin
其中,-u参数指定用户名,-p参数指定密码,--authenticationDatabase参数指定认证的数据库。
然后,我们使用以下命令创建一个名为testuser的普通用户:
use testdb
db.createUser(
{
user: "testuser",
pwd: "testpassword",
roles: [ {role: "readWrite", db: "testdb"} ]
}
)
其中,user参数指定用户名,pwd参数指定密码,roles参数指定该用户在哪个数据库具有权限。在这里,我们将读写权限指定为readWrite,并且将其限定在testdb数据库中。当然,你也可以选择其他的权限。
现在,我们已经成功地开启了Mongodb的用户访问控制,并创建了一个管理员用户和一个普通用户。
示例一:使用普通用户登录
现在,我们可以使用创建的普通用户登录到mongo shell,并尝试访问testdb数据库。这里我们使用以下命令:
mongo -u testuser -p testpassword --authenticationDatabase testdb
如果一切正常,你应该能够成功登录,并看到如下提示:
MongoDB shell version v4.4.5
connecting to: mongodb://127.0.0.1:27017/?authSource=testdb&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("63d4df13-f705-4e20-a3af-6a657f54bde8") }
MongoDB server version: 4.4.5
Welcome 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-user
然后,我们可以尝试向testdb数据库中插入一条数据:
use testdb
db.testcol.insertOne({name: "test", age: 20})
如果一切正常,我们应该能够成功插入数据。
示例二:使用管理员用户管理用户
现在,我们可以使用管理员用户管理其他用户。以下是一个简单的示例。
首先,我们需要使用管理员用户登录到mongo shell:
mongo -u admin -p password --authenticationDatabase admin
然后,我们可以使用以下命令查看所有用户:
use admin
db.getUsers()
如果一切正常,你应该能够看到所有的用户信息,包括用户名、所在数据库以及权限等。
现在,我们通过以下命令向testdb数据库中添加一个名为testuser2的新用户:
use admin
db.createUser(
{
user: "testuser2",
pwd: "testpassword2",
roles: [ {role: "readWrite", db: "testdb"} ]
}
)
如果一切正常,我们应该能够成功创建testuser2用户,并且该用户将具有testdb数据库的读写权限。
总之,通过以上三个步骤,我们已经成功地开启了Mongodb的用户访问控制,并创建了一个管理员用户和一个普通用户,通过两个示例说明了如何使用普通用户登录和如何使用管理员用户管理其他用户。