先週からMongoDBの設定ファイルを作らされていた。enableLocalhostAuthBypassってローカルなら認証いらないのでは?と思っていたら違うらしい。
作ったファイルの例(Windows用に直し)は以下のようなもの。
systemLog: destination: file path: "C:/mongodb/logs/log.txt" net: bindIp: 127.0.0.1 port: 27017 storage: dbPath: "C:/mongodb/data" journal: enabled: true commitIntervalMs: 500 engine: wiredTiger wiredTiger: engineConfig: cacheSizeGB: 1.0 journalCompressor: zlib collectionConfig: blockCompressor: zlib setParameter: enableLocalhostAuthBypass: true # enableLocalhostAuthBypass: false security: authorization: enabled # authorization: disabled
設定の仕方何度も確認したが,enableLocalhostAuthBypass: trueをいれてもコマンド実行になると認証が省けない。
読んでみるとadminデータベースの最初のユーザが作成されるまでの限定的操作では有効だがその後は関係ないらしい…
基本的には,一度目のcreateUserが完了するまで一部コマンドのみ有効である(getUsersなどは使えない)。普通はadminデータベースにユーザを追加する。
ところが,いったんdropUserでこのユーザを削除してしまうとmongodbを再起動するまではこの設定は無効である。
また,createUserで複数のユーザを作成している場合(adminデータベース以外のデータベースに対するユーザもカウントされるようである)には,一つだけdropUserで削除したところでまだユーザが残っているのでmongodbを再起動してもこの設定は無効である。