在 CouchDB 1.0 中创建用户时出错

Posted

技术标签:

【中文标题】在 CouchDB 1.0 中创建用户时出错【英文标题】:Error creating user in CouchDB 1.0 【发布时间】:2011-03-28 05:48:33 【问题描述】:

我的系统是 ubuntu 10.04,我安装了 CouchDB 1.0。我可以创建管理员或更多管理员,以管理员身份登录,一切正常。

从 CouchDB 的 0.11 开始,就有了用户不是管理员的概念,并且可以对数据库拥有细粒度的权限。我想创建这样的用户。我打开被褥,我没有登录,然后点击“注册”链接(右下角)。然后是关于用户名和密码的问题。当我填写表格并提交时,“用户名”字段下有很长的错误消息:

注册错误:gen_server,call, [couch_query_servers, get_proc,doc,>, 1, [ >], [>,>, >, 0) \n throw(forbidden: 'Only admin 可以设置角色');\n \n \n\n // 用户 db\n 中没有系统角色 for ( var i = 0; i ') \n throw(\n 禁止:\ n '用户数据库中没有系统角色(以下划线开头)。'\n );\n \n \n\n // 没有系统名称作为名称\n if (newDoc.name[0] === '_') \n throw(forbidden: '用户名不能以下划线开头。');\n \n \n">>], [],false,[], >, >]

这是什么?如何在 CouchDB 中创建用户?

【问题讨论】:

【参考方案1】:

要创建用户,请将 JSON 文档放入 http://localhost:5984/_users/org.couchdb.user:<username>

例如像这样创建一个文件login.json


    "_id": "org.couchdb.user:test",
    "name": "test",
    "password_sha": "24e8e07c23d8ae85108468ec4814b2f0fa84edde",
    "salt": "78f67e252351a56d6e1e6df9ba005239",
    "roles": [],
    "type": "user"

然后将数据放入couchdb:

curl -X PUT http://<admin>:<password>@localhost:5984/_users/org.couchdb.user%3Atest -S -s -H "Content-Type: application/json" -d @login.json

(将&lt;admin&gt;&lt;password&gt; 替换为您的couchdb 凭据。)

现在您应该可以使用用户“test”和密码“test123”登录 couchdb。

【讨论】:

【参考方案2】:

自己遇到这个问题,发现是因为我的name_id字符串的名称部分不匹配:

curl -X PUT https://admin:password@server:6984/_users/org.couchdb.user:dan \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '"name": "Dan", "password": "password", "roles": [], "type": "user"'

这不起作用,因为来自 org.couchdb.user:dan_id dan 的名称部分与提供的 name 不匹配

以下内容有效,因为用户名匹配(现在都是 Dan)

curl -X PUT https://admin:password@server:6984/_users/org.couchdb.user:Dan \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '"name": "Dan", "password": "password", "roles": [], "type": "user"'

【讨论】:

【参考方案3】:

我在 debian 上遇到了类似的错误。我从 build-couchdb 存储库编译了 CouchDB。我可以创建管理员用户,但不能创建普通用户。我也无法运行临时视图。通过清除 libmozjs1d 和 erlang-nox 并重新编译来解决它。希望对您有所帮助。

【讨论】:

【参考方案4】:

您似乎已经在系统上拥有一个管理员帐户,CouchDB 正在检测并希望您登录以创建帐户。检查您的 local.ini 配置文件,看看您是否在 [admins] 部分定义了任何管理员 - 如果您是从旧安装升级,您可能会定义一些管理员。

以其中一位管理员的身份登录,或者如果您不记得密码,请更改他们的密码(只需将 has 替换为您的明文密码,下次 CouchDB 启动时将对其进行哈希处理)。现在重新启动 CouchDB。如果您有管理员帐户,请以该用户身份登录,或者如果您删除了所有旧帐户,请点击注册以创建一个新帐户。

干杯。

【讨论】:

是的,我有管理员帐户。当我以管理员身份登录时,没有“注册”链接。如果我删除管理员帐户,也没有“注册”链接(只有您可以用来创建管理员帐户的链接)。当有管理员帐户但我没有登录并单击“注册”时 - 发生描述的错误。它在窗口中工作。问题仅在 Ubuntu 上,所以我怀疑某些文件的某些权限。

以上是关于在 CouchDB 1.0 中创建用户时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 Dataflow 中创建作业时出错(当前用户不能充当服务帐户)

在 SQL Server 中创建数据库用户时使用 pymssql 出错

在 Spring Boot 中创建名为“entityManagerFactory”的 bean 时出错

在Rails 5中创建Model的新记录时出错

在 iTunes Connect 中创建用户时出错:年份无效

django 3.2-在 sqlite3 中创建超级用户时出错