root无法在db

时间:2017-10-10 12:18:39

标签: mongodb authentication

我拥有 root 用户的凭据,我正在使用这些凭据来自动执行数据库备份。主要目的是为自动数据库备份创建原型,为简单起见,我使用 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-*

我收到以下错误:

  

失败:获取数据库mydb的集合时出错:运行错误   listCollections。数据库:mydb错误:未在mydb上授权   执行命令{listCollections:1,cursor:{}}

Isnt root 是否拥有所有数据库的所有权限?我有点害怕我可能遇到这样的情况,我想用root取代某些东西,但它没有得到许可。这是发布问题的根本原因。我想在将来避免这样的惊喜。

1 个答案:

答案 0 :(得分:3)

上述错误对我有误导性。但我的剧本错误或不完整。

如果你在我的脚本中查看以下行:

$MONGODUMP_PATH -d $MONGO_DATABASE

我没有在Mongodump命令中提供任何用户,因此错误消息。如果我按如下方式重写该行:

$MONGODUMP_PATH -d $MONGO_DATABASE --authenticationDatabase "admin" -u "dbowner" -p "pwd"

然后错误就消失了。