无法运行mongodump

时间:2015-04-17 12:59:18

标签: mongodb

我已经在我的mongoinstance上创建了两个具有以下角色的用户

use mydb
db.createUser(
  {
    user: "dbUser",
    pwd: "dbPassword",
    roles: [ { role: "dbOwner", db: "mydb" } ]
  }
)


use admin
db.createUser(
  {
    user: "adminUser",
    pwd: "adminPassword",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

MongoDb up&使用以上凭据运行,现在当我尝试使用终端

中的以下命令获取mongodump时
mongodump --host localhost --port 27017 -u dbUser -p dbPassword --authenticationDatabase mydb

我收到以下错误,无法解决此问题

connected to: localhost:27017
assertion: 13 not authorized on admin to execute command { getParameter: 1, authSchemaVersion: 1 }

有什么想法吗?我在哪里做错了?

3 个答案:

答案 0 :(得分:10)

正如@wdberkeley所建议的那样,通过将db name作为参数传递来解决问题

下面的命令运行正常

mongodump --host localhost --port 27017 -u dbUser -p dbPassword -d mydb

答案 1 :(得分:6)

mongodump不是Mongo shell命令,它是一个操作系统命令。

就像你运行mongo.exe从操作系统提示符启动shell一样,你应该从操作系统提示符以相同的方式运行mongodump。例如:

mongodump --host localhost --port 27017 -u dbUser -p dbPassword --authenticationDatabase mydb

由于

答案 2 :(得分:0)

userAdminAnyDatabase不足以对所有数据库执行mongodump,这就是为什么您会收到此错误。您将需要具有以下权限的超级用户

db.grantRolesToUser('username', [{
  role: 'backup',
  db: 'name of ur authentication db'
}])

特权在所有数据库上运行mongodump。

或者您只需要“备份”权限

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;


public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {

        GridPane pane = new GridPane();
        pane.setAlignment(Pos.CENTER);
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                int random = (int) (Math.random() * 3);
                if (random != 2) {
                    String image = "file:///C:/Anime/A.pics/a1.jpg";
                    if(random>0){
                        image = "file:///C:/Anime/A.pics/a1.jpg";
                    }
                    else{
                        image = " file:///C:/Anime/A.pics/a2.jpg";
                    }
                    pane.add(new ImageView(new Image(image)), j, i);
                }
            }
        }
        Scene scene = new Scene(pane, 150, 150);
        primaryStage.setTitle("Tic Tac Toe");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {

        Application.launch(args);

    }

}