我是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安全性,所有设置都保留默认值。
为什么我不能删除数据库?
答案 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的错误