Laravel MongoDB - 命令删除需要身份验证
Posted
技术标签:
【中文标题】Laravel MongoDB - 命令删除需要身份验证【英文标题】:Laravel MongoDB - command delete requires authentication 【发布时间】:2021-11-22 21:55:17 【问题描述】:使用 Mongodb 作为数据库开发 Laravel 应用,今天遇到了一个奇怪的问题。
不知何故,当我使用该应用程序时,在任何需要使用 mongo 命令的地方,我都会收到“命令需要身份验证”。这显然意味着我没有连接到数据库,但是“php artisan migrate --database=mongodb”确实可以正常工作,所有索引等都已创建。
使用与我的 .env 中相同的凭据,我可以使用 Compass 连接到数据库。
该应用是否有任何理由使用与 migrate 命令不同的配置?
供参考:
config/database.php
'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGO_DB_HOST', 'localhost'),
'dsn' => env('MONGO_DB_DSN', 'mongodb://') . env('MONGO_DB_HOST', 'localhost'),
'port' => 27017,
'database' => env('MONGO_DB_DATABASE', 'rte_golf'),
'username' => env('MONGO_DB_USERNAME'),
'password' => env('MONGO_DB_PASSWORD'),
'options' => [
// here you can pass more settings to the Mongo Driver Manager
// see https://www.php.net/manual/en/mongodb-driver-manager.construct.php under "Uri Options" for a list of complete parameters that you can use
'database' => env('DB_AUTHENTICATION_DATABASE', 'admin'), // required with Mongo 3+
],
],
.env
MONGO_DB_HOST=mongodb
MONGO_DB_DATABASE=rte_golf
MONGO_DB_USERNAME=username
MONGO_DB_PASSWORD=password
docker-compose 创建 mongo 镜像
mongodb:
image: mongo
restart: always
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: username
MONGO_INITDB_ROOT_PASSWORD: password
networks:
- backoffice
【问题讨论】:
【参考方案1】:考虑将以下行添加到您的 docker-compose 以启用身份验证模式
command: [--auth]
例如
version: '3.3'
services:
mongo:
container_name: mongodb
image: mongo
ports:
- "27017:27017"
volumes:
- mongodbdata:/data/db
command: [--auth]
restart: always
volumes:
mongodbdata:
networks:
default:
external:
name: mongo-network
【讨论】:
身份验证模式已经启用,但环境:MONGO_INITDB_ROOT_USERNAME:用户名 MONGO_INITDB_ROOT_PASSWORD:密码以上是关于Laravel MongoDB - 命令删除需要身份验证的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB 和 Artisan 在 Laravel 5 和 Lumen 上进行迁移