-1

刚刚在 windows 机器上安装了 couchdb 3.00 版本并配置为单节点。

在安装中定义管理员,即使在安装之后也是如此。定义后重新启动了 couchDB。

我的管理员出现在 UI 中: 在此处输入图像描述

但是当我尝试通过 shell 脚本创建数据库时,它会响应:

在此处输入图像描述

我绝对确定我的密码是正确的。

我想知道我是否犯了错误或错误。

4

2 回答 2

1

在 Couchdb 3 启动时,强制使用身份验证进行 PUT 或 DELETE 操作。为此目的,Invoke-WebRequest 具有 -Authorization 参数。但身份验证采用明确的格式。我使用 PSCouchDB ( https://pscouchdb.readthedocs.io/en/latest/auth.html ) 在 SecureString 密码对象中使用身份验证。

例如:

$password = "password" | ConvertTo-SecureString -AsPlainText -Force

Set-CouchDBSession -UserId admin -Password $password

Set-CouchDBSession -UserId admin    # prompt password

New-CouchDBDatabase -Database test
于 2020-08-12T10:35:01.780 回答
0

该问题与 CouchDB 无关,而是与 Invoke-WebRequest 允许的身份验证方法有关。

虽然我找不到任何明确声明支持 URL 凭据的文档,但我确实在 PowerShell 文档1中找到了支持的身份验证方法列表:

-验证

指定用于请求的显式身份验证类型。默认值为无。身份验证不能与 UseDefaultCredentials 一起使用。

可用的身份验证选项:

None:这是未提供身份验证时的默认选项;不使用显式身份验证。

基本:需要凭据。凭据以 base64(用户:密码)格式在 RFC 7617 基本身份验证标头中发送。

Bearer:需要令牌。使用提供的令牌发送 RFC 6750 Authorization: Bearer 标头。这是 OAuth 的别名

OAuth:需要令牌。使用提供的令牌发送 RFC 6750 Authorization: Bearer 标头。这是 Bearer 的别名

我将上述解释为不支持您使用的身份验证方法。

这是一个使用基本身份验证的示例,它肯定是执行任务的数百种方法之一。

 # setup variables to form a HTTP Basic Authorization
 $uid = "<username>"
 $pwd = "<password>"
 # Convert the Basic credentials to bytes
 $atob = [System.Text.Encoding]::UTF8.GetBytes($uid +":" + $pwd)
 # To Base64 encoding
 $auth = "Basic " + [System.Convert]::ToBase64String($atob)
 # Create the database
 Invoke-WebRequest -Method PUT -Url http://127.0.0.1:5964/abc -Headers @{"Authorization"=$auth}

FWIW,cURL 允许简化内联 URL http 身份验证,但这可能不是一个选项。

上面的代码借鉴了这个关于基本身份验证的 SO Q/A答案。

1 PowerShell 文档版本 7

于 2020-03-15T15:31:45.830 回答