mongodb - Laravel + MongoDB:无法验证
问题描述
我有一个mongodb,在admin中定义了一个用户,如下
{
"_id" : "admin.realtebo",
"user" : "realtebo",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
},
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
}
],
}
从 linux shell 工具中使用此凭据时mongo
,我可以成功地对 mongo 安装中的每个数据库执行任何我想做的事情
我输入了以下(并且它们是正确的)数据到我的.env
DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=dev_db
DB_USERNAME=realtebo
DB_PASSWORD=<mypasswor>
Laravel 无法连接
MongoDB \ Driver \ Exception \ AuthenticationException (11)
Authentication failed.
我确信这不是 Laravel 或配置问题,因为同一个应用程序可以成功连接到远程 mongodb。
抱歉,这个菜鸟问题,但是..如何在 mongo 的管理数据库中设置用户以便realtebo
可以读写dev_db
?我必须明确添加用户dev_db
吗?
在此先感谢,我敢肯定这是愚蠢的。
解决方案
如果是 jenssegers 的 mongodb,需要在 config\database.php 中指定认证数据库:
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'options' => [
'database' => 'admin' // <=== here
]
],
推荐阅读
- database - 系统从数据库获取数据时找不到指定的文件
- hl7 - 如何使用 HAPI 2.4 创建 HL7 消息 ORU_R01 类型
- jquery - 使用 JSON 数据填充 INPUT 和 SELECT
- forms - Xamarin 表单控件值不可见
- c# - 如何依赖注入数据访问层,它在其构造函数中采用数据库设置?
- html - 我的 HTML 没有链接到我的 CSS
- nginx - 带有 http2 的 nginx 后面的 asp.net 核心 - 远程 ip 始终为 127.0.0.1
- r - 在R中绘制风上升?
- android - cancelAll() 和 cancel() 不会关闭我的通知
- avro - 为具有多种记录类型的数组创建 avro 模式?