Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启用身份验证时使用mongo java驱动程序复制数据库操作_Java_Mongodb - Fatal编程技术网

启用身份验证时使用mongo java驱动程序复制数据库操作

启用身份验证时使用mongo java驱动程序复制数据库操作,java,mongodb,Java,Mongodb,我需要使用mongo java驱动程序执行copydb操作。这是我的代码 String nonce = mongo.getDB("admin").command(new BasicDBObject("copydbgetnonce","1")).get("nonce").toString(); String username = "admin"; String password = "password"; String key = md5(nonce + username + md5(userna

我需要使用mongo java驱动程序执行
copydb
操作。这是我的代码

String nonce = mongo.getDB("admin").command(new BasicDBObject("copydbgetnonce","1")).get("nonce").toString();
String username = "admin";
String password = "password";
String key = md5(nonce + username + md5(username + ":mongo:" + password));

DBObject copyOp = new BasicDBObject("copydb", "1").
  append("fromdb" , "db1").
  append("todb" , "db2").
  append("username" , username).
  append("nonce" , nonce).
  append("key" , key);

mongo.getDB("admin").command(copyOp);
在服务器上禁用身份验证时,它正在工作。身份验证失败,结果未经授权

{ "serverUsed" : "localhost/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "unauthorized"}
我可以保证密码和用户名是正确的。请给我指一下正确的方向

PS我的mongod实例是
Tokumx1.5


谢谢。

这对你有用吗

final DBObject cmd = new BasicDBObject( );
cmd.put( "copydb", "1" );
cmd.put( "slaveOk", true );
cmd.put( "fromdb", "db1" );
cmd.put( "todb", "db2" );
cmd.put( "fromhost", "fromHost" );

BasicDBObject nonceCmd = new BasicDBObject( );
nonceCmd.put( "copydbgetnonce", 1 );
nonceCmd.put( "fromhost", "fromHost" );
final CommandResult nonceResult = mongo.getDB( "admin" ).command( nonceCmd );
final String nonce = nonceResult.getString( "nonce" );
final byte[ ] innerHex =( getUserName( ) + ":mongo:" + String.valueOf( getPassword( ) ) ).getBytes( );
final byte[ ] outerHex = ( nonce + getUserName( ) + Util.hexMD5( innerHex ) ).getBytes( );

cmd.put( "username", getUserName( ) );
cmd.put( "nonce", nonce );
cmd.put( "key", Util.hexMD5( outerHex ) );

final CommandResult res = mongo.getDB( "admin" ).command( cmd );
if ( !res.ok( ) )
{
    throw res.getException( ) ;
}

你是在回答还是在确认?应该是某种回答