先週から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を再起動してもこの設定は無効である。

