質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

1419閲覧

MongoDB:rootロールを持ったユーザでコレクション参照がエラー(Unauthorized)となる。

a-syuji

総合スコア16

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/01/20 01:01

前提・実現したいこと

rootロールを持ったユーザは全てのデータベース・コレクションにアクセス可能と想定していましたが
一般ユーザが作成したコレクションにアクセスを試みるとエラー(Unauthorized)となり失敗しました。
rootロールはLinuxにおけるrootユーザと同じく何でも出来るロールと思っているのですが認識に相違あるでしょうか?
原因調査にご協力いただけますと幸いです。

発生している問題・エラーメッセージ

[root@testsv01 ~]# mongo testdb2 -u root --authenticationDatabase admin MongoDB shell version v4.2.2 Enter password: connecting to: mongodb://127.0.0.1:27017/testdb2?authSource=admin&compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("5ffbaeca-3b8d-4415-94bf-562cd3ae478c") } MongoDB server version: 4.2.2 > show databases; admin 0.000GB config 0.000GB local 0.000GB testdb 0.000GB testdb2 0.000GB > db; testdb2 > show collections; testcollection > db.testcollection.find({}); Error: error: { "ok" : 0, "errmsg" : "not authorized on testdb2 to execute command { find: \"testcollection\", filter: {}, lsid: { id: UUID(\"5ffbaeca-3b8d-4415-94bf-562cd3ae478c\") }, $db: \"testdb2\" }", "code" : 13, "codeName" : "Unauthorized" } > exit; [root@testsv01 ~]#

※testdb2にreadWriteロールを持ったユーザでは「db.testcollection.find({});」でデータを参照できます。

補足情報(FW/ツールのバージョンなど)

[root@testsv01 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@testsv01 ~]# [root@testsv01 ~]# rpm -qa | grep mongo mongodb-org-server-4.2.2-1.el7.x86_64 mongodb-org-shell-4.2.2-1.el7.x86_64 mongodb-org-mongos-4.2.2-1.el7.x86_64 mongodb-org-4.2.2-1.el7.x86_64 mongodb-org-tools-4.2.2-1.el7.x86_64 [root@testsv01 ~]#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

centos7で”MongoDB shell version v4.2.2”環境ですが
root権限を持つrootユーザを作成して、接続しております。

mongo

1use admin 2db.createUser( 3{ 4 user: "root", 5 pwd: "passw0rd", 6 roles: [ "root" ] 7}) 8show users;

投稿2020/01/20 23:09

amura

総合スコア333

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

a-syuji

2020/01/21 18:22

ご回答ありがとうございます。再度確認したところ"root"ロールを付けたと思っていましたが、"userAdminAnyDatabase"ロールが付いていました。ロールを付け直すことで対策できました。 ``` > db.getUser("root") { "_id" : "admin.root", "userId" : UUID("a9f60fb8-593a-4d4b-a440-a99d17561318"), "user" : "root", "db" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } ``` ↓ ``` db.grantRolesToUser("root", [ { role: "root", db: "admin" } ]) ``` ↓ ``` db.revokeRolesFromUser("root", [{ role: "userAdminAnyDatabase", db: "admin" }]) ``` ↓ ``` > db.getUser("root") { "_id" : "admin.root", "userId" : UUID("a9f60fb8-593a-4d4b-a440-a99d17561318"), "user" : "root", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問