本指南详细介绍了如何在MongoDB中设置和管理用户权限,包括创建数据库管理员及普通用户的具体操作流程。
MongoDB 是一个流行的开源 NoSQL 数据库,支持文档型、集合型及图形数据等多种模型。尽管 MongoDB 在设计上与传统的关系型数据库有所不同,但它同样提供了权限控制功能来确保数据的安全性。
本篇文章将详细介绍如何在 MongoDB 中设置权限,包括添加管理员和普通用户,并介绍启用权限认证后通过 PHP 客户端进行连接的方法。
MongoDB 没有预设的管理员账号,在使用其权限系统前需要手动创建。管理员账户必须在 `admin` 数据库下创建才能拥有全局管理权。尽管如此,他们不能直接操作其他数据库,需先在 `admin` 数据库中认证后方可执行相关任务。
添加管理员的具体步骤如下:
1. 使用命令行工具连接到 MongoDB 服务器。
2. 切换至 `admin` 数据库:使用 `use admin` 命令;
3. 调用 `db.addUser()` 方法,输入用户名和密码。例如:`db.addUser(adminUser, password)` 将创建一个新的管理员账户。
在完成上述步骤后,需开启 MongoDB 的权限认证功能,在配置文件中取消注释掉 `auth=true` 并重启服务以使更改生效。
启用权限验证之后,用户只能在其所属的数据库中登录。管理员管理其他数据库时同样需要先进行身份验证(如:使用 `db.auth(adminUser, password)` 进行认证)后方可执行操作。
接下来介绍添加普通用户的步骤:
1. 切换到要添加用户的数据库,例如 `use myDatabase`;
2. 调用 `db.addUser()` 方法并输入用户名和密码。同时可以设置只读权限(通过在方法中加入第三个参数 `true`):
- 仅具有读写权限的用户:`db.addUser(normalUser, password)`。
- 只有阅读权的用户:`db.addUser(readOnlyUser, password, true)`。
当使用 PHP 客户端连接启用认证功能后的 MongoDB 数据库时,需在连接字符串或选项中包含用户名和密码。以下是两种常见的方法:
1. 使用 URI 连接字符串:
```php
$client = new MongoDB\Driver\Manager(mongodb:username:password@host:port/database);
```
2. 使用连接选项进行配置:
```php
$uri = mongodb:host:port/database;
$options = [username => username, password => password];
$client = new MongoDB\Driver\Manager($uri, $options);
```
通过创建管理员和普通用户,MongoDB 的权限设置提供了类似关系型数据库的安全控制。启用认证并正确配置 PHP 客户端连接可以确保数据在传输及存储过程中保持安全性。