CouchDB复制 - 未经授权访问或创建数据库

Deh*_*tth 4 authentication replication couchdb

我正在尝试设置CouchDB数据库复制,但两者都无法通过Futon和cURL/CLI工作:在两种情况下都会出现以下错误消息:

{"error":"未授权","原因":"未经授权访问或创建数据库table1"}

curl -X POST http://127.0.0.1:5984/_replicate -d '{"source": "table1",
"user_ctx": {"name": "", "roles": ["admin"]}, "target":   
"http://username:password@server:5984/table1", "create_target": false, 
"continuous": true}' -H "Content-Type: application/json"
Run Code Online (Sandbox Code Playgroud)

目标数据库通过用户名和密码进行保护,对于HTTP基本身份验证,我添加了凭据,如您所见.当我通过Futon创建复制文档时出现相同的错误.

谢谢你的帮助.

小智 5

这有点晚了,但我认为你需要它.

(CouchDb 1.6.1)

https://wiki.apache.org/couchdb/Replication

POST/_replicate HTTP/1.1

{ 
    "source": {
        "url":"https://example.net:5984/table1",
        "headers":{
            "Authorization":"Basic Ym9iQGV4YW1wbGUuY29tOnBhc3N3b3Jk"
        }
    }, 
    "target":"target1", 
    "create_target": false, 
    "continuous": true
}
Run Code Online (Sandbox Code Playgroud)

其中"Basic"后面的base64字符串是输出:

  • echo -n'用户名:密码'| base64(数据库table1的用户名和密码)https://example.net:5984.
  • 非常重要:当您发送请求时,请将其发送到网址.目标也应该是您将复制"target"的数据库的名称:" http://server:5984/table1" - >> table1
  • 用于发送此复制的请求标头也应包含Basic标记.(管理员用户名和密码或目标数据库的superadmin密码)

恢复

curl -X POST http://127.0.0.1:5984/_replicate 
-d '{ 
    "source": {
        "url":"https://example.net:5984/table1",
        "headers":{
            "Authorization":"Basic Ym9iQGV4YW1wbGUuY29tOnBhc3N3b3Jk"
        }
    }, 
    "target":"target1", 
    "create_target": false, 
    "continuous": true
}' -H "Authorization: Basic dXNlcm5hbWUyOnBhc3N3b3JkMg==;Content-Type: application/json"
Run Code Online (Sandbox Code Playgroud)
  • dXNlcm5hbWUyOnBhc3N3b3JkMg ==:username2:password2(base64)
  • Ym9iQGV4YW1wbGUuY29tOnBhc3N3b3Jk:用户名:密码(base64)

  • username2:password2:数据库target1(on http://server:5984)的admin名称和密码

  • username:password:数据库target1(on 127.0.0.1:5984)的admin名称和密码