认证方式及配置实现连续复制
- 无认证(公开访问)
- 配置方式:
- 若源数据库和目标数据库都允许公开访问(不推荐用于生产环境),在进行连续复制时,使用CouchDB的复制API,例如通过HTTP请求。假设源数据库地址为
http://source.example.com:5984/source_db
,目标数据库地址为http://target.example.com:5984/target_db
,可以发送如下的HTTP POST请求:
{
"source": "http://source.example.com:5984/source_db",
"target": "http://target.example.com:5984/target_db",
"continuous": true
}
- Basic认证
- 源数据库Basic认证配置:
- 当源数据库使用Basic认证时,假设源数据库用户名是
source_user
,密码是source_password
,源数据库地址为http://source.example.com:5984/source_db
。在复制请求中添加认证信息,如使用curl命令发送HTTP POST请求进行连续复制:
curl -X POST -H "Content-Type: application/json" -d '{
"source": "http://source_user:source_password@source.example.com:5984/source_db",
"target": "http://target.example.com:5984/target_db",
"continuous": true
}' http://target.example.com:5984/_replicate
- 目标数据库Basic认证配置:
- 若目标数据库使用Basic认证,假设目标数据库用户名是
target_user
,密码是target_password
,目标数据库地址为http://target.example.com:5984/target_db
。同样在复制请求中添加认证信息,例如:
curl -X POST -H "Content-Type: application/json" -d '{
"source": "http://source.example.com:5984/source_db",
"target": "http://target_user:target_password@target.example.com:5984/target_db",
"continuous": true
}' http://source.example.com:5984/_replicate
- CouchDB身份验证(使用CouchDB内置的身份验证机制)
- 源数据库CouchDB身份验证配置:
- 首先确保源数据库启用了CouchDB的身份验证。假设已创建用户
source_user
,密码为source_password
,并且该用户对源数据库有适当的权限。在发送复制请求时,获取认证令牌(例如通过/users/_login
端点获取令牌),然后在复制请求的头部添加认证令牌。假设获取到的令牌是token_value
,发送如下请求:
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token_value" -d '{
"source": "http://source.example.com:5984/source_db",
"target": "http://target.example.com:5984/target_db",
"continuous": true
}' http://source.example.com:5984/_replicate
- 目标数据库CouchDB身份验证配置:
- 对于目标数据库,同样假设已创建用户
target_user
,密码为target_password
,获取目标数据库的认证令牌target_token_value
。在发送复制请求时,在请求头部添加目标数据库的认证令牌,如:
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer target_token_value" -d '{
"source": "http://source.example.com:5984/source_db",
"target": "http://target.example.com:5984/target_db",
"continuous": true
}' http://target.example.com:5984/_replicate