现在我通过源码编译报错变为:[17:55:03 CST 2023/04/12] [CRIT] (github.com/alibaba/MongoShake/v2/collector/docsyncer.StartDropDestCollection:93) Drop collection ns {server stocktransfers} of dest mongodb failed. (Unauthorized) command drop requires authentication start document replication failed: Drop collection ns {server stocktransfers} of dest mongodb failed. (Unauthorized) command drop requires authentication [17:55:03 CST 2023/04/12] [CRIT] (main.startup:145) run replication failed: start document replication failed: Drop collection ns {server stocktransfers} of dest mongodb failed. (Unauthorized) command drop requires authentication 想简单问下 为什么会需要 drop collection的权限?
这个报错的原因可能是MongoShake在同步数据时,需要先删除目标数据库中的同名集合,然后再创建新的集合并插入数据。这个过程需要MongoShake具有目标数据库的drop权限,否则会报错。可以尝试以下方法来解决这个问题:
# 连接到目标数据库
mongo --host <host> --port <port> -u <user> -p <password>
# 切换到admin数据库
use admin
# 创建一个新的用户
db.createUser (
{
user: "mongoshake",
pwd: "mongoshake123",
roles: [
{ role: "readWrite", db: "writeapp" },
{ role: "dbAdmin", db: "writeapp" }
]
}
)
# 授予drop权限
db.grantRolesToUser (
"mongoshake",
[
{ role: "dropCollection", db: "writeapp" }
]
)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。