Dar*_*nik 5 authentication mongodb
我有root用户的凭据,我正在使用这些凭据来自动执行 db 备份。主要目的是为自动数据库备份创建原型,为简单起见,我使用root。脚本(我从文章中借用)如下所示:
#!/bin/bash
#Force file syncronization and lock writes
mongo admin -u "root" -p "root" --eval "printjson(db.fsyncLock())"
MONGODUMP_PATH="/usr/bin/mongodump"
MONGO_DATABASE="mydb" #replace with your database name
TIMESTAMP=`date +%F-%H%M`
S3_BUCKET_NAME="mydb" #replace with your bucket name on Amazon S3
S3_BUCKET_PATH="backup/mongo"
# Create backup
$MONGODUMP_PATH -d $MONGO_DATABASE
# Add timestamp to backup
mv dump mongodb-$HOSTNAME-$TIMESTAMP
tar cf mongodb-$HOSTNAME-$TIMESTAMP.tar mongodb-$HOSTNAME-$TIMESTAMP
# Upload to S3
s3cmd put mongodb-$HOSTNAME-$TIMESTAMP.tar s3://$S3_BUCKET_NAME/$S3_BUCKET_PATH/mongodb-$HOSTNAME-$TIMESTAMP.tar
#Unlock database writes
mongo admin -u "root" -p "root" --eval "printjson(db.fsyncUnlock())"
#Delete local files
#rm -rf mongodb-*
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
失败:获取数据库集合时出错
mydb:运行时出错listCollections。数据库:mydb错误:无权mydb执行命令 { listCollections: 1, cursor: {} }
不是root拥有对所有数据库的所有访问权限吗?我有点害怕我可能会遇到我想用 root 取代某些东西但它没有权限的情况。这是发布问题的根本原因。我想避免以后出现这样的意外。
上面提到的错误对我有误导性。但是我的脚本是错误的或不完整的。
如果您查看我的脚本中的以下行:
$MONGODUMP_PATH -d $MONGO_DATABASE
Run Code Online (Sandbox Code Playgroud)
我没有在 Mongodump 命令中提供任何用户,因此没有提供错误消息。如果我重写该行,如下所示:
$MONGODUMP_PATH -d $MONGO_DATABASE --authenticationDatabase "admin" -u "dbowner" -p "pwd"
Run Code Online (Sandbox Code Playgroud)
然后错误消失。
| 归档时间: |
|
| 查看次数: |
3669 次 |
| 最近记录: |