向MongoDB导入JSON文件时遭遇权限错误,寻求解决方案
解决MongoDB mongoimport权限错误的方案
这是典型的MongoDB权限认证问题——你当前的连接没有操作cstore数据库的权限,尤其是执行drop集合的权限。下面给你几个针对性的解决办法,按从易到全的顺序来:
使用有权限的账号执行导入命令
如果你的MongoDB已经开启了权限认证,直接在mongoimport命令中加入账号认证信息即可,格式如下:mongoimport --db cstore --collection stores --drop --file /home/kuliza360/Desktop/Office/Cstoredemo/my_data.json --username <你的认证用户名> --password <你的密码> --authenticationDatabase admin注意:
--authenticationDatabase要填你账号所在的数据库,通常超级管理员账号在admin库下;如果你的账号是专门为cstore创建的,就把这里改成cstore。创建拥有足够权限的专用账号
如果你还没有能操作cstore的账号,先通过Mongo Shell用超级管理员账号连接:mongo -u <超级管理员用户名> -p <密码> --authenticationDatabase admin然后切换到
cstore数据库,创建一个具备读写和集合管理权限的账号:use cstore db.createUser({ user: "cstoreManager", pwd: "设置一个安全密码", roles: [ { role: "readWrite", db: "cstore" }, // 负责读写数据 { role: "dbAdmin", db: "cstore" } // 包含删除集合等管理权限 ] })之后用这个新账号执行上面的
mongoimport命令即可。临时关闭权限认证(仅测试环境可用)
如果是本地测试环境,你可以临时关闭权限认证来快速解决:- 修改MongoDB配置文件(通常路径是
/etc/mongod.conf),找到security部分,把authorization: enabled改成authorization: disabled; - 重启MongoDB服务:
sudo systemctl restart mongod # Ubuntu/Debian等systemd系统 # 或者用service命令 sudo service mongod restart
重启后再执行你原来的导入命令就能成功,但生产环境绝对不能这么做,会带来严重的安全隐患。
- 修改MongoDB配置文件(通常路径是
额外提醒:
- 确认你的账号密码没有输入错误,若密码包含特殊字符,记得用引号包裹;
- 检查JSON文件的路径是否正确,当前用户是否有读取该文件的权限(不过你的错误提示是数据库权限问题,这个大概率不是原因,但可以顺手确认下)。
内容的提问来源于stack exchange,提问作者user7422128
相关产品推荐
相关产品推荐

