MongoDBで認証エラーが出る件

※ユーザ設定はadmin含め、各データベース毎に行う必要があるらしい。
 またadminはユーザ一覧表示などはできるが、データの読み書きができない仕様らしい。

$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
> show dbs;
2018-01-29T20:16:13.396+0900 E QUERY    [thread1] Error: listDatabases failed:{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
        "code" : 13,
        "codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:781:19
shellHelper@src/mongo/shell/utils.js:671:15
@(shellhelp2):1:1
>

さて、どうしたものか。。。。
これはユーザ認証に問題があるらしい。
そもそもユーザが登録されていないので、まず特権ユーザを1つ作ってみる。

> use admin
switched to db admin
>  db.createUser(
...   {
...     user: "hogehoge",
...     pwd: "password",
...     roles:
...     [
...       {
...         role: "userAdminAnyDatabase",
...         db: "admin"
...       }
...     ]
...   }
... )
Successfully added user: {
        "user" : "hogehoge",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}
>

これでadminユーザを追加することができた。
では追加したユーザがちゃんと認証されているかテストしてみる。

> db.auth("hogehoge","password")
1

1と表示されたら認証成功。0が表示されたら認証失敗だ。

あらためてデータベースを確認してみる。

> show dbs
admin  0.078GB
local  0.078GB

ちゃんと表示されたので認証は成功しているようだ。

ユーザ認証の方法は二つある。

1)mongoシェル起動時に認証する場合
$ mongo データベース名 -u ユーザ名 -p

2)mongoシェル起動後に認証する場合
> db.auth("hogehoge","password")

0 件のコメント:

コメントを投稿