CouchDB不会删除现有数据库

时间:2014-12-07 20:55:13

标签: couchdb

我是CouchDB的新手,遇到了一个奇怪的问题。我可以创建一个数据库但不能删除它。

我正在设置一个测试框架,它将在开始时创建数据库的测试版本,并在测试运行结束时将其删除但我真的不希望将框架SSH连接到服务器,如这个答案是Delete couchDB databases

我的设置是在Virtual Box 4.3中运行的CentOS 7(来自已发布的最小图像)。我从EPEL存储库安装了CouchDB,版本报告为1.6.1。我可以使用Futon管理数据库来创建数据库,添加和删除文档。删除Futon中的数据库会挂起。使用curl删除返回404未找到。

$ curl -X PUT http://dbserver:5984/test
{"ok":true}
$ curl -X DELETE http://dbserver:5984/test
{"error":"not_found","reason":"missing"}

基于CouchDB文档,它是删除数据库的正确URL。我禁用了SELinux,但没有效果。没有启用CouchDB安全性,所有设置都保留默认值。

为什么我不能删除数据库?

1 个答案:

答案 0 :(得分:2)

问题似乎是缺少SELinux政策。

Permissive模式运行SELinux,使"验证安装"检查为我工作。 (CentOS 7,couchdb 1.6.1通过EPEL存储库中的yum安装)。

查看/var/audit/audit.log显示:

type=AVC msg=audit(1422956916.341:371): avc:  denied  { create } for  pid=2188 comm="beam" name=".test_suite_db_design" scontext=system_u:system_r:rabbitmq_beam_t:s0 tcontext=system_u:object_r:couchdb_var_lib_t:s0 tclass=dir

因此,SELinux拒绝了couchdb进程来创建该目录。

使用audit2allow工具可以创建可以使用semodule命令启用的缺失规则:

grep couchdb /var/log/audit/audit.log | audit2allow -M couchdbvarlib
semodule -i couchdbvarlib.pp

请参阅here

已经在Fedora #1098802

中报告了针对CouchDB的错误