MongoDBは、C++で記述されたクロスプラットフォームのNoSQLデータベースシステムです。 MongoDBは、MySQLやPostgreSQLなどの従来のテーブルベースのSQLデータベースとは異なり、大量のデータストレージ用に特別に設計されています。 MongoDBは、動的スキーマを持つJSONのようなドキュメントを使用し、データベースにデータを追加する前に事前定義されたスキーマを必要としません。 MongoDBは無料のオープンソースであり、ストレージ、データレプリケーション、アドホッククエリ、負荷分散などの豊富な機能セットが付属しています。
このチュートリアルでは、CentOS8にMongoDBをインストールして保護する方法を説明します。
前提条件
- Atlantic.netクラウドプラットフォーム上の新しいCentOS8VPS。
- サーバーで構成されているrootパスワード。
ステップ1–Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 1GB以上のRAMを搭載したオペレーティングシステムとしてCentOS8を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
CentOS 8サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
dnf update -y
ステップ2–MongoDBリポジトリを追加する
次のコマンドで作成できます:
nano /etc/yum.repos.d/mongodb-org.repo
次の行を追加します:
[mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
終了したら、ファイルを保存して閉じます。次に、システムへのMongoDBのインストールに進むことができます。
ステップ3–MongoDBをインストールする
これで、次のコマンドを実行するだけでMongoDBをインストールできます。
dnf install mongodb-org -y
インストールが完了したら、MongoDBサービスを開始し、次のコマンドを使用してシステムの再起動後にサービスを開始できるようにします。
systemctl start mongod systemctl enable mongod
次のコマンドを使用して、MongoDBサービスのステータスを確認できるようになりました。
systemctl status mongod
次の出力が表示されます。
● mongod.service - MongoDB Database Server Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2020-04-10 10:58:18 EDT; 7s ago Docs: https://docs.mongodb.org/manual Process: 2904 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS) Process: 2902 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 2899 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 2897 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS) Main PID: 2906 (mongod) Memory: 77.0M CGroup: /system.slice/mongod.service └─2906 /usr/bin/mongod -f /etc/mongod.conf Apr 10 10:58:17 centos8 systemd[1]: Starting MongoDB Database Server... Apr 10 10:58:17 centos8 mongod[2904]: about to fork child process, waiting until server is ready for connections. Apr 10 10:58:17 centos8 mongod[2904]: forked process: 2906 Apr 10 10:58:18 centos8 mongod[2904]: child process started successfully, parent exiting Apr 10 10:58:18 centos8 systemd[1]: Started MongoDB Database Server.
これで、MongoDBはポート27017で実行およびリッスンしています。次のコマンドで確認できます:
netstat -pnltu | grep 27017
次の出力が得られるはずです:
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2906/mongod
次のコマンドを使用してMongoDBシェルにアクセスすることもできます。
mongo
次の出力が得られるはずです:
MongoDB shell version v4.2.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("b0f7656f-f939-4f50-87d2-01cbeca0849a") } MongoDB server version: 4.2.5 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2020-04-10T10:58:18.522-0400 I CONTROL [initandlisten] --- Enable MongoDB's free cloud-based monitoring service, which will then receive and display metrics about your deployment (disk utilization, CPU, operation statistics, etc). The monitoring data will be available on a MongoDB website with a unique URL accessible to you and anyone you share the URL with. MongoDB may use this information to make product improvements and to suggest MongoDB products and deployment options to you. To enable free monitoring, run the following command: db.enableFreeMonitoring() To permanently disable this reminder, run the following command: db.disableFreeMonitoring() ---
次のコマンドを使用して、MongoDBシェルを終了できます。
>exit
ステップ4–MongoDB認証を有効にする
nano /etc/mongod.conf
ファイルの最後に次の行を追加します。
security: authorization: enabled
終了したら、ファイルを保存して閉じます。次に、MongoDBサービスを再起動して、変更を適用します。
systemctl restart mongod
ステップ5–MongoDB管理者ユーザーを作成する
次に、管理タスクを実行するためのすべての権限を持つ管理ユーザーを作成する必要があります。
まず、次のコマンドを使用してMongoDBシェルにアクセスします。
mongo
次の出力が得られるはずです:
MongoDB shell version v4.2.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("09e0e028-cd26-4f9d-9270-52b938925f99") } MongoDB server version: 4.2.5
次に、次のコマンドを使用してデータベースをadminに変更します。
> use admin
次に、次のコマンドを使用してmyadminというMongoDB管理者ユーザーを作成します。
> db.createUser( { user: "myadmin", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
ユーザーが作成されると、次の出力が表示されます。
Successfully added user: { "user" : "myadmin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
次に、次のコマンドを使用してMongoDBシェルを終了します。
>exit
ステップ6–MongoDB認証を確認する
この時点で、MongoDBは認証を使用して構成されています。これで、MongoDBを操作する前に、ユーザー名とパスワードを入力する必要があります。
次に、認証なしでMongoDBに接続します:
mongo
次の出力が得られるはずです:
MongoDB shell version v4.2.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("fecf1846-13fd-4959-91da-5cf323781e13") } MongoDB server version: 4.2.5
次に、次のコマンドを実行して、MongoDBユーザーを一覧表示します。
> show users
次のエラーが発生するはずです:
2020-04-10T11:08:04.598-0400 E QUERY [js] uncaught exception: Error: command usersInfo requires authentication : [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/db.js:1638:15 [email protected]/mongo/shell/utils.js:883:9 [email protected]/mongo/shell/utils.js:790:15 @(shellhelp2):1:1
これは、認証せずにユーザーを一覧表示できないことを示しています。
次に、次のコマンドを使用してMongoDBを終了します。
>exit
ステップ7–管理ユーザーを使用してMongoDBにアクセスする
それでは、管理ユーザーを使用してMongoDBに接続しましょう:
mongo -u myadmin -p --authenticationDatabase admin
以下に示すように、管理者パスワードを入力するように求められます。
MongoDB shell version v4.2.5 Enter password:
管理者パスワードを入力し、 Enterを押します 。次の出力が得られるはずです:
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("a39f723c-f1b5-4c93-9e67-ff82379dfb62") } MongoDB server version: 4.2.5
次に、データベースをadminに変更し、次のコマンドでユーザーを一覧表示します。
> use admin > show users
次の出力が得られるはずです:
{ "_id" : "admin.myadmin", "userId" : UUID("bcd920c1-63fd-4b82-a8a6-eb6515d51a34"), "user" : "myadmin", "db" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }
次に、次の出力でMongoDBシェルを終了します。
>exit
結論
上記のガイドでは、CentOS 8にMongoDBをインストールする方法を学びました。また、MongoDB認証を有効にして管理ユーザーを作成する方法も示しました。これで、Atlantic.Net VPS上のMongoDBがユーザー名とパスワードで保護されます。Atlantic.NetのVPSがない場合は、今すぐVPSホスティングを開始してMongoDBをインストールしてください!