mongodbのユーザ権限について教えてください

1,649 views
Skip to first unread message

kuma.m...@gmail.com

unread,
Jan 8, 2015, 12:22:13 AM1/8/15
to mongo...@googlegroups.com
初めてmongodbを使用、mongodb環境構築をおこなっています。
mongodbをcentosに構築しています。
 

db.createUserで
roles: [{role: "root", db: "admin"}]
のrootユーザを作成し、
authをtureにして、mongoを起動し、rootユーザで作成した、
 他DBのユーザを削除しようとしたところ、エラーとなり削除できませんでした。
------------------------
> use admin
switched to db admin
 > db.auth("root","root")
 1
 > db.system.users.remove({user:"test"})
WriteResult({
 "writeError" : {
 "code" : 13,
"errmsg" : "not authorized on admin to execute command { delete: \"system.users\", deletes: [ { q: { user: \"test\" }, limit: 0.0 } ], ordered: true }"
}
})
------------------------
role: "root"のユーザであれば、なんでもできるかと思っていたのですが・・・・
(role:userAdminAnyDatabaseでも試してみました)

ユーザ認証なし(noauth = true)時と同様に
全DBのユーザ管理(追加・削除・変更)、DB管理ができるユーザを
作成したいと思っております。

ご存知の方お教えいただけますでしょうか?
どうぞよろしくお願い致します。

Hiroaki Kubota

unread,
Jan 8, 2015, 5:01:43 AM1/8/15
to mongo...@googlegroups.com
窪田です。

db.getSiblingDB('admin').system.users.find()

が見たいです。

2015年1月8日 14:22 <kuma.m...@gmail.com>:

--
このメールは Google グループのグループ「MongoDB JP」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには mongodb-jp+...@googlegroups.com にメールを送信してください。
このグループに投稿するには mongo...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/mongodb-jp からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

kuma.m...@gmail.com

unread,
Jan 8, 2015, 8:08:57 PM1/8/15
to mongo...@googlegroups.com
窪田様、レスありがとうございます。Kumadakiです。
 
db.getSiblingDB('admin').system.users.find()
の結果は以下のようになります。
----------------------------------------------------
{ "_id" : "admin.root", "user" : "root", "db" : "admin", "credentials" : { "MONGODB-CR" : "f4d1d601bafb7c09aa9ffb7f0acc6ca1" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "test_db.test", "user" : "test", "db" : "test_db", "credentials" : { "MONGODB-CR" : "a6de521abefc2fed4f5876855a3484f5" }, "roles" : [ { "role" : "readWrite", "db" : "admin" } ] }
----------------------------------------------------
なお、testユーザを作る際は、以下手順で作成しております。
----------------------------------------------------
> use test_db
switched to db test_db
> db.addUser({user:"test", pwd:"1234", roles:["readWrite"]})
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "test", "roles" : [ "readWrite" ] }
----------------------------------------------------
 
rootユーザを作るときのroleの条件が何か足りないのかと、、悩んでます。。
お知恵をいただけますとうれしいです。
 
 
 

 

Hiroaki Kubota

unread,
Jan 11, 2015, 12:15:57 AM1/11/15
to mongo...@googlegroups.com
窪田です。
パーミッションは適切に設定されてそうなので、db.removeUser  (またはdropUser)で消せると思うのですがどうでしょう。
手元の環境2.6.4では、正常に動作しました。

ちなみに、authorization: enabled の場合、直接、system.users を削除するのは不可能なようですね。
これも手元で確認済み。


2015年1月9日 10:08 <kuma.m...@gmail.com>:

--
Message has been deleted

kuma.m...@gmail.com

unread,
Jan 12, 2015, 8:47:47 AM1/12/15
to mongo...@googlegroups.com
Kumadaki です。
窪田様、ご回答ありがとうございます。
手元に環境が只今ないため、明日確認させていただきます。
取り急ぎお礼申し上げます。
authorization: enabled の場合でも、なんでも可能なスーパーユーザは難しいのですね。。


2015年1月11日日曜日 14時15分57秒 UTC+9 crumbjp:

kuma.m...@gmail.com

unread,
Jan 12, 2015, 11:27:23 PM1/12/15
to mongo...@googlegroups.com
Kumadaki です。

db.removeUser と db.dropUser どちらでも削除できました!
(db.removeUserだとWarning(db.removeUser has been deprecated, please use db.dropUser instead)は出ましたが削除はできました。(環境2.6.6))

窪田様 、確認およびご回答いただき、本当にありがとうございました。



2015年1月11日日曜日 14時15分57秒 UTC+9 crumbjp:
Reply all
Reply to author
Forward
0 new messages