couchdb-pythonをいじってみたりしてるんですが、標題のことをしようと思って調べてました。所詮、couchdbのインターフェイスはHTTPなので、HTTPリクエストを組み立ててサーバに投げれば出来ることは出来るんですが、せっかくできあいのライブラリがあるんだし、もっとお手軽にできないものかと思ってソースを読んでみました。
結論。
couchDBのwikiに解説されているとおり、あるデータベース(仮に’database’とする)のアクセスにユーザ名・パスワードが必要になるようにするには、http://server:5984/database/_security に
{
"readers" : {
"names" : ["takeshi"],
}
}
のようなJSON文字列をPUTすれば良いのですが、db.createを使って普通のドキュメントのように ‘_id’ に ‘_security’ を設定して呼んでも、アンダースコアで始まる _id ではエラーになってしまいます。そこで、python-couchdbライブラリのUndocumentedなメソッド couchdb.client.Database.resource.put を使って設定します。
import couchdb
server = couchdb.client.Server('http://admin:[email protected]:5984/')
db = server.create('database')
db.resource.put('_security',
{'readers' : {'names' : ['takeshi']}},
{'Content-Type': 'application/json'})
というような感じで、couchdb.client.Databaseクラス下のメソッドで簡単にPUTリクエストをサーバに投げることができました。あ、takeshiさんのパスワードは /etc/couchdb/local.ini に書いておきます。または、Futonインターフェイスからサクッとパスワードの設定をすることもできます。