Docker容器内执行mongoimport导入数据时认证失败求助
问题分析与解决方案
核心问题
你遇到的认证失败,根源在于两点:
- 认证数据库指定错误:root超级用户默认创建在
admin数据库下,但你的mongoimport命令用test库做认证,导致权限验证失败。 - 文件路径错误:容器内的
datasets目录挂载在/datasets,脚本里的../datasets相对路径无法定位到正确文件。
修正后的初始化脚本
将db_init.sh修改为:
tail -n +1 /datasets/things.csv | mongoimport \ --db=test \ --collection=things \ --type=csv \ --fieldFile=/datasets/fields.csv \ --username=root \ --password=example \ --authenticationDatabase=admin
额外验证点
- 确认宿主机
./docker/mongo/datasets目录下确实存在things.csv和fields.csv文件,保证容器启动时能正确挂载。 docker-entrypoint-initdb.d下的脚本会在容器初始化阶段自动执行,无需手动进入容器运行。若要手动测试,需确保Mongo服务已正常启动,且使用上述修正后的命令。
改动原因说明
--authenticationDatabase=admin:明确指定用admin数据库做身份验证,匹配root用户的创建位置。- 替换为绝对路径
/datasets:容器内目录结构与宿主机不同,相对路径无法正确指向挂载的数据集目录。
内容的提问来源于stack exchange,提问作者Bobby Wan-Kenobi
相关产品推荐
相关产品推荐

