【问题标题】:can't create server-admin in couchdb无法在 couchdb 中创建服务器管理员
【发布时间】:2016-05-23 22:08:29
【问题描述】:

我正在按照 couchdb 安全文档 (http://docs.couchdb.org/en/1.6.1/intro/security.html) 尝试使用 cURL 创建服务器管理员: curl -X PUT $HOST/_config/admins/anna -d '"secret"'

当我这样做时,我得到一个错误: {"error":"not_found","re​​ason":"数据库不存在。"}

我使用的是 v2.0,所以我不知道自 1.6 版文档以来是否发生了一些变化。我可以使用 fauxton 创建服务器管理员。有什么想法吗?

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    对于遇到此问题的其他人来说,这是一个简单的答案:在 couchdb 2.0 中,一些 API 转移到使用端口 5986 ...我一直在使用端口 5984(在 v2.0 中仍然大量使用,但是显然不适用于 _config 端点)。

    以下作品:

    curl -X PUT http://localhost:5986/_config/admins/admin1 -d '"password"'
    

    【讨论】:

    • 有谁知道这在哪里记录?我有完全相同的问题。我很确定它一开始就在端口 5984 上工作,然后在某个时候它变成了 5986
    • 显然文档并没有完全融入 CouchDB 2。我们确实应该使用 /_node/nodename/_config (我被可靠地告知这是因为 CouchDB 2 可以在集群中工作)。我得到的另一个建议是检查 /_membership 接口(在端口 5984 上)以获取节点列表
    【解决方案2】:

    Couchdb2 添加用户的方式是

    curl -X PUT http://localhost:5984/_node/nodename/_config/admins/admin1 -d '"password"'
    

    【讨论】:

    • 我刚刚收到了 CouchDB 社区的回复。是的,5986 端口将被弃用。文档可能也会更新以反映新的 API。
    • 当您将 CouchDB 作为集群时,此解决方案有效。
    【解决方案3】:

    在 GUI 中,您会发现需要设置单节点集群,并在设置时指定管理员用户名和密码。

    您可以使用可以 POST 到的 API 端点执行相同的操作:
    http://docs.couchdb.org/en/2.1.0/api/server/common.html#post--_cluster_setup

    在 2.0 中使用 enable_single_node 返回 {"error":"bad_request","reason":"Invalid Action'"} 所以我恢复了这样做:

    j=$(cat <<EOF
    {
      "action": "enable_cluster",
      "bind_address": "0.0.0.0",
      "username": "admin",
      "password": "$PASS",
      "port": "5984",
      "node_count":"1"
    } 
    EOF
    )
    
    curl  -s -X POST -H "Content-Type: application/json" http://$IP/_cluster_setup -d "$j"
    curl  -s -X POST -H "Content-Type: application/json" $URI/_cluster_setup -d '{"action": "finish_cluster"}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 2018-01-18
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多