1. ホーム
  2. mongodb

[解決済み] MongoDB - 管理者ユーザが認証されていない

2022-02-09 17:38:42

質問

MongoDBに認証機能を追加しようとしています。
私はLinuxでMongoDB 2.6.1を使って、このすべてをやっています。
私の mongod.conf ファイルは、古い互換性のある形式です。
(これはインストール時に付いてきたものです)。

1) (3)で説明したようにadminユーザーを作成しました。

http://docs.mongodb.org/manual/tutorial/add-user-administrator/

2) 次に、この行のコメントを外して mongod.conf を編集しました。

auth = true

3) 最後にmongodサービスを再起動し、私はでログインしようとしました。

/usr/bin/mongo localhost:27017/admin -u sa -p pwd

4) 接続はできるのですが、接続時にこのように表示されます。

MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

5) これで、次のように見える。 sa を作成したユーザーには、まったくパーミッションがありません。

root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
        "$err" : "not authorized for query on test.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>

何が問題なのでしょうか?この手順を3回繰り返しましたが
MongoDBのドキュメントに指定されている通りにすべてやったつもりです。しかし、うまくいきません。
私はこれを期待していた sa ユーザは何もする権限がないので
その後、他のユーザーを作成し、より具体的な権限を与えることができます。

解決方法は?

私も同じ問題で頭を悩ませていたのですが、最初の管理者ユーザーを追加する際にロールをrootに設定したら全てうまくいったんです。

use admin
db.createUser(
  {
    user: 'admin',
    pwd: 'password',
    roles: [ { role: 'root', db: 'admin' } ]
  }
);
exit;

既に作成済みの場合は admin のユーザーであれば、このようにロールを変更することができます。

use admin;
db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

認証設定の完全なリファレンスは ステップ インターネットで何時間も調べてまとめました。