我尝试在我的 Ubuntu(18.04)上安装几次 CouchDB,遵循官方的文档。
运行时,sudo apt install -y couchdb
我在终端中看到安装指南,当系统提示我添加并确认“admin”用户的密码时,我按照说明操作。安装似乎已完成,没有任何错误消息,我知道 CouchDB 正在运行,因为如果我输入,curl http://127.0.0.1:5984/
我会得到预期的欢迎响应。
但如果我尝试执行任何其他操作(例如url -X PUT http://127.0.0.1:5984/new_db
),我会收到以下错误:{"error":"unauthorized","reason":"You are not a server admin."}
。
我猜测这可能是 curl 的问题,我也尝试了 GUIhttp://127.0.0.1:5984/_utils/#login,但当我尝试使用“admin”和我设置的密码登录时,系统提示我的凭据错误。我也无法创建另一个管理员用户,因为我需要以管理员身份登录才能执行此操作。
关于如何摆脱这种僵局,您有什么建议吗?当我卸载并重新安装时,旧凭据是否仍然存在,从而导致冲突?
答案1
问题解决了。
与 CouchDb 官方文档中所述不同,在终端中运行引导设置时,您将创建一个管理员用户,此后 CouchDb 要求对除最简单的 GET 请求之外的所有请求进行身份验证。因此,您需要将您的凭据传递给 CouchDB。以下是使用 curl 或 Python 执行此操作的一些方法。
创建新数据库
$ curl -X PUT http://localhost:5984/new_db -u 'admin:password'
相同的操作分为两行(如果您想编写多个命令,这很有用,这样您就可以节省重新输入凭据的时间)
$ HOST="http://admin:[email protected]:5984"
$ curl -X PUT $HOST/new_db
与 Python (3.6) 脚本相同
import json, requests
answer = requests.put('http://127.0.0.1:5984/new_db', auth=('admin', 'password'))
print(answer.json())