2
我有憑據root用戶,我正在使用這些憑證來自動執行數據庫備份。主要目的是爲自動數據庫備份創建原型,爲簡單起見,我使用根。該腳本(我從文章借用)看起來像如下:root cant執行db上的listCollections命令
#!/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-*
我收到以下錯誤:
Failed: error getting collections for database
mydb
: error runninglistCollections
. Database:mydb
Err: not authorized onmydb
to execute command { listCollections: 1, cursor: {} }
心不是根擁有遍及所有數據庫訪問?我有點害怕我可能遇到這種情況,我想用超級用戶取代某些東西,但它沒有權限。這是發佈問題的根本原因。我想在未來避免這樣的驚喜。
很高興看到您找到了解決方案。另外,你應該考慮[automongobackup腳本](https://github.com/micahwedemeyer/automongobackup),它也是這樣做的。當你必須處理複製品或分片時,它非常有效。但是你仍然需要管理s3的上傳方面。 –