MongoDB ユーザー認証を設定する

MongoDB ユーザー認証を設定する

MongoDbは、デフォルトだとパスワードもなしでアクセスできるため、ユーザー認証を設定する。

※ubuntu19.10にMongoDBのインストール手順はこちら

環境

  • OS  Ubuntu19.10
  • mongoDB 4.2.1

ユーザー作成

ユーザーとパスワードを設定する

## mongoコマンド実行
mongo

## adminDBを利用
> use admin

## ユーザーとパスワードとロール(root スーパーユーザー)を追加
db.createUser({user:"mongo", pwd:"password", roles:["root"]})

## 退出
> quit() or exit

mongod.confファイル変更

## ファイルの編集
vi /etc/mongod.conf

#security:のコメントアウトを外し、 authorization: enabled を追加する

#security:

↓

security:
authorization: enabled

※自分は#security:のコメントアウトを外し忘れててmongod再起動時にエラーが発生しました

参考エラー内容

sudo systemctl status mongod
● mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2019-11-06 09:55:53 JST; 16s ago
     Docs: https://docs.mongodb.org/manual
  Process: 20504 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=2)
 Main PID: 20504 (code=exited, status=2)

11月 06 09:55:53 testuser-Virtual-Machine systemd[1]: Started MongoDB Database Server.
11月 06 09:55:53 testuser-Virtual-Machine mongod[20504]: Unrecognized option: authorization
11月 06 09:55:53 testuser-Virtual-Machine mongod[20504]: try '/usr/bin/mongod --help' for more information
11月 06 09:55:53 testuser-Virtual-Machine systemd[1]: mongod.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
11月 06 09:55:53 testuser-Virtual-Machine systemd[1]: mongod.service: Failed with result 'exit-code'.

mongoDB再起動

設定を反映させるために再起動する

## 再起動する
sudo systemctl restart mongod

ユーザーとパスワードを指定してmongoDBに接続

作成ユーザーとパスワードで接続してみる

## ユーザーを指定してログイン
mongo -u mongo

作成したpasswordを入力する
MongoDB shell version v4.2.1
Enter password: 

<出力結果>
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("372e4405-2055-47bf-8f44-91ad5d634594") }

外部接続確認

外部からユーザーとパスワードを指定して接続してみる

まずは、指定せずにログインしてみる

エラーとなり接続できない

ユーザーとパスワードを指定する

ログインできるようになります。