我无法使用管理员在 CouchDB 3.x 中创建数据库
I am not able to do create database in CouchDB 3.x with Admin
刚刚在 windows 机器上安装了 couchdb 3.00 版本并配置为单节点。
在安装中定义管理员,即使在安装之后。定义后重新启动 couchDB。
我的管理员出现在 UI:
但是当我尝试通过 shell 脚本创建数据库时,它会响应:
我绝对确定我的密码是正确的。
我想知道我是否犯了错误或错误。
该问题与 CouchDB 无关,而是与 Invoke-WebRequest 允许的身份验证方法有关。
虽然我找不到任何明确说明 URL 凭据 不受 支持的文档,但我确实在 PowerShell 文档中找到 1 支持的身份验证方法列表:
-Authentication
Specifies the explicit authentication type to use for the request. The default is None. Authentication cannot be used with
UseDefaultCredentials.
Available Authentication Options:
None: This is the default option when Authentication isn't supplied;
no explicit authentication is used.
Basic: Requires Credential. The credentials are sent in an RFC 7617 Basic Authentication header in the format of
base64(user:password).
Bearer: Requires Token. Sends an RFC
6750 Authorization: Bearer header with the supplied token. This is an
alias for OAuth
OAuth: Requires Token. Sends an RFC 6750
Authorization: Bearer header with the supplied token. This is an alias
for 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 答案。
从 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
刚刚在 windows 机器上安装了 couchdb 3.00 版本并配置为单节点。
在安装中定义管理员,即使在安装之后。定义后重新启动 couchDB。
我的管理员出现在 UI:
但是当我尝试通过 shell 脚本创建数据库时,它会响应:
我绝对确定我的密码是正确的。
我想知道我是否犯了错误或错误。
该问题与 CouchDB 无关,而是与 Invoke-WebRequest 允许的身份验证方法有关。
虽然我找不到任何明确说明 URL 凭据 不受 支持的文档,但我确实在 PowerShell 文档中找到 1 支持的身份验证方法列表:
-Authentication
Specifies the explicit authentication type to use for the request. The default is None. Authentication cannot be used with UseDefaultCredentials.
Available Authentication Options:
None: This is the default option when Authentication isn't supplied; no explicit authentication is used.
Basic: Requires Credential. The credentials are sent in an RFC 7617 Basic Authentication header in the format of base64(user:password).
Bearer: Requires Token. Sends an RFC 6750 Authorization: Bearer header with the supplied token. This is an alias for OAuth
OAuth: Requires Token. Sends an RFC 6750 Authorization: Bearer header with the supplied token. This is an alias for 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 答案。
从 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