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

时间:2015-10-26 14:49:15

标签: authentication couchdb replication

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

{&#34;错误&#34;:&#34;未经授权&#34;,&#34;原因&#34;:&#34;未经授权访问或创建数据库table1&#34;} < /强>

^@

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

感谢您的帮助。

1 个答案:

答案 0 :(得分: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
}

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

  • echo -n'用户名:密码'| base64(https://example.net:5984中数据库table1的用户名和密码。
  • 非常重要:当您发送请求时,请将其发送到网址。目标也应该是您将复制“target”的数据库的名称:“http://server:5984/table1” - &gt;&gt;表1
  • 用于发送此复制的请求标头也应包含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"
  • dXNlcm5hbWUyOnBhc3N3b3JkMg ==:username2:password2(base64)
  • Ym9iQGV4YW1wbGUuY29tOnBhc3N3b3Jk:用户名:密码(base64)

  • username2:password2:数据库target1的管理员名称和密码(在http://server:5984上)

  • 用户名:密码:数据库target1的管理员名称和密码(在127.0.0.1:5984上)