※ユーザ設定は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 件のコメント:
コメントを投稿