无法使用用户将文档添加到数据库中 - “您不是服务器管理员”

时间:2014-04-02 08:08:27

标签: couchdb

我与我创建的用户之间存在问题,因为我可以将实际内容提交到我已列出的数据库中。我已按照此处列出的步骤(Creating regular users in CouchDB)查看了无数页面的文档,试图对其进行排序。 (例如:http://wiki.apache.org/couchdb/Security_Features_Overview)。

我正在使用v1.5并尝试设置用户" testAdmin"作为"测试的管理员" D B。 superadmin,这是我通过蒲团界面创建的管理员帐户。

如果我检查安全文档,我可以在那里看到我应该允许testAdmin用户访问数据库的权限:

curl -X GET http://superadmin:1234@localhost:5984/test/_security

响应:

   { 
      "admins": 
         { "names":["testAdmin"],
           "roles":[]
         },
      "readers":
         { "names":["testUser"],
           "roles":[]
         }
    }

然后如果我运行这个,我得到"你不是服务器管理员。"

curl -X PUT http://testAdmin:5678@localhost:5984/test/ -d '{"abc": "def"}'

响应:

{"error":"unauthorized","reason":"You are not a server admin."}

我已尝试将用户切换到阅读器,我也尝试使用我当前列为阅读器的其他用户,并且我一直遇到同样的错误。

编辑:我能够与我创建的用户一起登录到Futon,并且他们的权限在Futon中似乎都运行良好,但是我&# 39; m仍然无法成功使用卷曲。

4 个答案:

答案 0 :(得分:4)

您正在尝试create a database而不是creating a document。如果您想创建没有预定义ID的文档,请改用POST请求。

答案 1 :(得分:1)

使用

  

卷曲

curl -u USER:PASS -X PUT "http://host:port/db_target" -d '{...}'

这可能是最初问题的解决方案。

答案 2 :(得分:1)

值得补充的是,Fauxton经常“忘记”其身份验证,如果你将其保持打开并且没有意识到,在你重新加载页面之前会以奇怪的方式失败并且它意识到你需要再次登录。

短篇小说我遇到了类似的问题,需要重新验证才能解决问题。

答案 3 :(得分:0)

@Kxepal已经解决了这个问题。所以只是要说清楚这是发生了什么。

你有一个superadmin在couchdb术语中是服务器管理员,可以做任何事情。他/她可以创建数据库,删除它们,获取任何文档等。

然后您有其他用户分配给他们的权限。因此,当您创建_security文档时,您所做的就是告诉couchdb dbadmin是数据库的管理员,而dbreader是数据库的member。从蒲团这是admin和成员的定义

  

数据库管理员可以更新设计文档并编辑管理员和成员列表。

     

数据库成员可以访问数据库。如果没有定义成员,则数据库是公共的。

定义管理员或成员后,您的数据库将不再公开。只有具有足够权限的用户才能访问它们。

请求@Kxepal指出您尝试创建数据库。数据库管理员无法创建数据库。该权利属于服务器管理员,在您的情况下是superadmin。