使用root账号通过mongoimport导入非admin数据库时认证失败如何解决
问题原因
MongoDB 用户账号与创建该账号时所属的数据库强绑定,常规配置下 root 权限账号均创建在 admin 数据库下。
你当前执行的命令未显式指定身份认证的数据库,mongoimport 会默认将 --db 参数传入的目标业务库作为认证库校验账号权限,目标业务库下不存在对应的 root 账号,因此返回认证失败。当你指定 --db 为 admin 时,刚好匹配 root 账号的所属数据库,因此可以正常认证执行。
解决方案
在原有命令中新增 --authenticationDatabase admin 参数,显式指定使用 admin 数据库完成身份认证即可,修改后的命令参考如下:
mongoimport --host=$DB_HOST:$DB_PORT \ --username=$DB_ROOT_USERNAME \ --password=$DB_ROOT_PASSWORD \ --authenticationDatabase admin \ --db=$DB_NAME \ --collection=$DB_COLLECION \ --file=output.csv \ --type=csv
如果你的 root 账号是在非 admin 的其他数据库下创建的,将 --authenticationDatabase 后的参数替换为账号实际所属的数据库名即可。
内容的提问来源于stack exchange,提问作者Tiino
相关产品推荐
相关产品推荐

