概要
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
リポジトリファイルの中身を以下のとおりにする。
[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
ちなみに、もし任意のバージョンを指定したい場合は以下の様にインストール
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
という行があるので、コメントアウトを外して修正する)
:
# 認証機能を使用しない場合, 下記をコメントアウト
security:
authorization: enabled
設定後、MongoDB 再起動
# MongoDB サービス再開
sudo systemctl start mongod
コレで認証設定も完了。mongo
コマンドで入ることはできても、検索や登録・更新などを行うと認証エラーの記述が表示される。
mongo -u ユーザID -p パスワード -authenticationDatabase admin
で mongo に入るか、
mongo
で入った後に use admin
→ db.auth("管理者のID", "パスワード")
を実行して中でログインすると、
問題なく検索・登録・更新などが行える。
前者のやり方は、サーバでコマンドログの記録などを行なっている場合は、推奨されない。(パスワード情報が履歴に残っちゃうので)
以上で、MondoDB の構築から認証設定まで完了。
おまけ: MondoDB をアンインストールする時
以下を全部やる
sudo yum remove mongodb-org*
sudo rm -r /var/log/mongodb /var/lib/mongo
なんかエラーで混乱してきたら、データ次第だが、上記で消してから再インストールするのも一つの方法。