Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
18
Help us understand the problem. What is going on with this article?
@tomy0610

CentOS7 に MongoDB を導入する方法

More than 1 year has passed since last update.

概要

MongoDB を GCP で借りてるサーバに導入した時の備忘録。

前提

  • OS: CentOS Linux release 7.6.1810 (Core)
  • 後述の手順は、基本的にルート権限のユーザで実行している前提とする

尚、「公式の導入手順」に則っているので、そちらも参照のこと。

手順1: MongoDB を導入

リポジトリ作成

/etc/yum.repos.d/mongodb-org-4.0.repo というリポジトリファイルを作成。

sudo vi /etc/yum.repos.d/mongodb-org-4.0.repo

リポジトリファイルの中身を以下のとおりにする。

/etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

インストール

質問事項に全て Yes と答えることをデフォルトにして最新をインストール

sudo yum install -y mongodb-org

ちなみに、もし任意のバージョンを指定したい場合は以下の様にインストール

(v4.0.6を指定した例)
sudo yum install -y mongodb-org-4.0.6 mongodb-org-server-4.0.6 mongodb-org-shell-4.0.6 mongodb-org-mongos-4.0.6 mongodb-org-tools-4.0.6

入ったか確認するためバージョン表示コマンド実行

mongod -version

起動

sudo systemctl start mongod

起動できかた確認

# 確認コマンド
$ sudo systemctl status mongod

# 結果
● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   # 以下が 「active (running)」 になっていれば OK.
   Active: active (running) since Sun 2019-03-03 15:36:18 JST; 30s ago
     Docs: https://docs.mongodb.org/manual
   :

※ デフォルトの起動ポートは 27017 番

SELinux の設定

SELinux の設定状況を確認するコマンドを実行。(Permissive ならこの手順はスキップする。)

# 確認コマンド
$ getenforce

# 結果: Permissive なら何もしなくて良い
Permissive

SELinux が有効になっている場合は、以下のコマンドで一時無効化
(本当はちゃんと設定すべきだが、今回はやらない)

setenforce 0

手順2: 管理ユーザ作成と認証機能有効化

管理ユーザ登録

# MongoDB に入る
mongo

# admin データベースに接続する。
use admin

# 管理ユーザを登録
db.createUser({user:"admin", pwd:"Zaq12wsx", roles:[{role:"root", db:"admin"}]})

# ユーザの存在確認
db.getUsers()

# もしくは以下でもユーザ確認できる (パスワードはハッシュ化されているので文字列になっている)
db.system.users.find()

管理ユーザ登録時は以下に注意

  • user: 管理者 ID を適当に決めてください(任意)。上記は一例。
  • pwd: 適当なパスワードを決めてください(任意)。上記は一例。
  • roles: 上記に記載のとおりに書いてください(固定)

MongoDB 認証有効化 (その1)

# 一度 MongoDB から抜ける
exit

# 認証・認可を有効にして再起動
mongod --auth --dbpath /var/lib/mongo

MongoDB 認証有効化 (その2)

その1 の認証付き再起動コマンドがエラーでうまくいかない場合は、こちらで試してください。

# 一度 MongoDB から抜ける
exit

# 一度 MongoDB サービスを停止
sudo systemctl stop mongod

# 設定ファイルを編集 (sudo 不要でできるならそれで OK)
sudo vi /etc/mongod.conf

以下の記述を、設定ファイルの末尾に直接追記する。
(もともと security という行があるので、コメントアウトを外して修正する)

/etc/mongod.conf
:
# 認証機能を使用しない場合, 下記をコメントアウト
security:
  authorization: enabled

設定後、MongoDB 再起動

# MongoDB サービス再開
sudo systemctl start mongod

コレで認証設定も完了。mongo コマンドで入ることはできても、検索や登録・更新などを行うと認証エラーの記述が表示される。

mongo -u ユーザID -p パスワード -authenticationDatabase admin で mongo に入るか、
mongo で入った後に use admindb.auth("管理者のID", "パスワード") を実行して中でログインすると、
問題なく検索・登録・更新などが行える。

前者のやり方は、サーバでコマンドログの記録などを行なっている場合は、推奨されない。(パスワード情報が履歴に残っちゃうので)

以上で、MondoDB の構築から認証設定まで完了。

おまけ: MondoDB をアンインストールする時

以下を全部やる

sudo yum remove mongodb-org*
sudo rm -r /var/log/mongodb /var/lib/mongo

なんかエラーで混乱してきたら、データ次第だが、上記で消してから再インストールするのも一つの方法。

18
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tomy0610
なんちゃってフルスタック風エンジニア。変わった技術に興味津々、ハーフで顔も濃いが、「そろそろ彼女が欲しいなぁ」とか普通に考えたりする、どこにでもいる健全な男子。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
18
Help us understand the problem. What is going on with this article?