database - 在 MongoDB 中启用访问控制不起作用
问题描述
当我用作连接字符串时一切正常:mongodb://0.0.0.0:27017/data
. 使用连接字符串添加启用访问控制后:mongodb://user:pwd@0.0.0.0:27017/?authSource=data
停止工作。
我已连接到 mongodb,但在应用程序中我看到了 request This request has no response data available
。但是对于连接字符串,mongodb://0.0.0.0:27017/data
有数据。
要添加身份验证,我使用了此指令 启用访问控制:
我创建了管理员:
> use admin
switched to db admin
> db.createUser(
... {
... user: 'admin',
... pwd: 'password',
... roles: [ { role: 'root', db: 'admin' } ]
... }
... );
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
> exit;
我更改了 mongo 配置文件 - mongod.cfg:
security:
authorization: enabled
我以管理员身份登录:
> use admin
> db.auth('admin','password');
1
我创建了新用户:
use data
db.createUser(
{
user: "user",
pwd: "pwd",
roles: [
{ role: "dbAdmin", db: "data" },
]
}
)
db.grantRolesToUser(
"user",
[ "readWrite" , { role: "read", db: "data" } ],
{ w: "majority" , wtimeout: 4000 }
)
我使用:mongodb://user:pwd@0.0.0.0:27017/?authSource=data
作为连接字符串,但没有工作。我究竟做错了什么?
解决方案
我解决了我的问题。原因authSource
在于连接字符串。前:
"connectionString": "mongodb://user:pwd@0.0.0.0:27017/?authSource=data"
后:
"connectionString": "mongodb://user:pwd@0.0.0.0:27017/data"
现在它工作正常。
推荐阅读
- python - 将 pandas 系列转换为 2D numpy 数组
- angular - 无法在 Visual Studio 代码终端中看到当前打开的项目路径
- python - 使用 SPI 将 16 位数组从 Raspberry Pi 传输到 STM32F4
- laravel - 在 laravel 字符串验证中避免使用 html 标签
- node.js - MongoDB Docker URI 没有主机名、域名和 tld
- php - 错误 1044 (42000):拒绝用户 'root'@'localhost' 访问数据库 (MySQL - MariaDB)
- python - Python Web Scraper - 从 href 抓取链接的问题
- r - 在 dplyr 中应用带有 cross() 的 summarise() 函数时出错
- sql - 在基于行的字段/值表上处理复杂的查询
- java - 如何保护您的 API 免受了解您 API 的开发人员的攻击?