我的系统是ubuntu10.04,我安装了CouchDB 1.0。我可以创建管理,或更多的管理员,登录作为管理,一切都很好。
从CouchDB中的0.11开始,就有了用户不是管理员的概念,并且可以对数据库拥有细粒度的权限。我想创建这样的用户。我打开Futon,我没有登录,我点击"Signup“链接(右下角)。还有关于用户名和密码的问题。当我填写并提交表单时,在"Username“字段下有非常长的错误消息:
注册错误:{gen_server,call,[couch_query_servers,{get_proc,{doc,<<“_get_proc/_auth”>>,{1,<<84,165,145,147,156,145,146,42,53,239,238,7,235,44,58,114>>},{[{<<“语言”>>,<<"javascript">>},{<<"validate_doc_update">>,<<“)\n函数(newDoc,oldDoc,userCtx) {\n if ((oldDoc & oldDoc.type !==‘== 'user') \\n抛出({禁止:'doc.type必须是用户’});\n } //我们目前只允许用户文档\n\n如果(newDoc._deleted === true) {\n /允许管理员删除和匹配用户\n/不检查其他字段\n ((userCtx.roles.indexOf('_admin') !== -1) \\n (userCtx.name == oldDoc.name)) {\n返回;\n}其他{\n抛出({禁忌:‘只有管理员可以删除其他用户文档’});\n }n }\n如果(!newDoc.name) {\n抛出({禁忌:'doc.name是必需的‘});\n}\n if (!(newDoc.roles & (typeof newDoc.roles.length !==’undefined‘) {\n抛({禁忌:'doc.roles必须是数组’});\n \n如果(newDoc._id !== ('org.couchdb.user:‘+ newDoc.name)) {\n抛出( {\n禁用:'Doc’必须是org.couchdb.user:name'\n });\n }\n\n如果(oldDoc) { //验证所有更新\n如果(oldDoc.name !== newDoc.name) {\n抛出({禁止:‘用户名不能更改’);\n }\n\n如果(newDoc.password_sha && !newDoc.salt) {\n抛出({\n禁止:‘具有password_sha的用户必须有盐。’+\n‘请参阅/_utils/script/couch.js (例如代码);\n \n如果(userCtx.roles.indexOf('_admin') === -1) { if (oldDoc) { //验证非管理更新\n if (userCtx.name !== newDoc.name) {\n抛出( {\n禁止:‘’\n });\n }\n /验证角色更新\n var oldRoles = oldDoc.roles.sort();\n var newRoles = newDoc.roles.sort();\n如果(oldRoles.length !== newRoles.length) {\n抛出({禁止:‘只有_admin可以编辑角色’});\n }\n\n表示(var i= 0;i< oldRoles.length;i++) {\n如果(oldRolesi !== newRolesi) {\n抛出({禁忌:‘只有_admin可以编辑角色’});\n }\n }如果(newDoc.roles.length > 0) {\n抛出({禁止:‘只有管理员可以设置角色’});\n }n}n //没有系统角色在用户db\n中用于(var i= 0;i< newDoc.roles.length;i++) {\n如果(newDoc.rolesi === '') {\n抛出({\n禁用:\n‘在用户db中没有系统角色(以下划线开头)。’\n};N}n}n/没有系统名\n如果(newDoc.name === '_') {\n抛出({禁止的:‘用户名不能以下划线.’}开头);\n }\n }\n“>>},[],false,[},{<<”_<<“_design/_auth”>>,<<“1-54a591939c91922a35eFeeb2c3a72”>>}]}}
那是什么?如何在CouchDB中创建用户?
发布于 2010-10-25 10:02:42
若要创建用户,请将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
(用couchdb凭据替换<admin>
和<password>
。)
现在,您应该能够使用用户"test“和密码"test123”登录couchdb。
发布于 2011-03-16 15:07:51
我在debian上也犯了类似的错误。我从编译了CouchDB。我可以创建管理用户,但不是常规用户。我也无法运行临时视图。通过净化libmozjs1d和erlang并重新编译来解决这一问题.希望这能帮上忙。
发布于 2010-08-11 08:52:23
看起来您在系统上已经有了一个管理帐户,CouchDB正在检测该帐户,并期望您在创建帐户时登录。检查您的local.ini配置文件,看看您是否在admins部分中定义了任何管理员--如果您正在从旧安装升级,可能会有一些定义。
作为这些管理员之一登录,或者更改他们的密码,如果您不记得它(只需替换您的明文密码,它将在下次CouchDB启动时被散列)。现在重新启动CouchDB。如果您有一个管理帐户,然后以该用户的身份登录,或者如果您删除了所有旧帐户,然后单击“注册”创建一个新帐户。
干杯。
https://stackoverflow.com/questions/3456256
复制相似问题