MongoDB è un sistema di database NoSQL multipiattaforma scritto in C++. MongoDB è diverso dai tradizionali database SQL basati su tabelle come MySQL e PostgreSQL ed è appositamente progettato per l'archiviazione di dati ad alto volume. MongoDB utilizza documenti simili a JSON con schemi dinamici e non richiede uno schema predefinito prima di aggiungere dati a un database. MongoDB è gratuito, open source e include un ricco set di funzionalità tra cui archiviazione, replica dei dati, query ad hoc, bilanciamento del carico e molto altro.
In questo tutorial, spiegheremo come installare e proteggere MongoDB su CentOS 8.
Prerequisiti
- Un nuovo VPS CentOS 8 sulla piattaforma Atlantic.net Cloud.
- Una password di root configurata sul tuo server.
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo CentOS 8 come sistema operativo con almeno 1 GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al server CentOS 8, esegui il comando seguente per aggiornare il sistema di base con gli ultimi pacchetti disponibili.
dnf update -y
Passaggio 2:aggiungi il repository MongoDB
Puoi crearlo con il seguente comando:
nano /etc/yum.repos.d/mongodb-org.repo
Aggiungi le seguenti righe:
[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
Salva e chiudi il file quando hai finito. Successivamente, puoi procedere con l'installazione di MongoDB nel tuo sistema.
Fase 3 – Installa MongoDB
Ora puoi installare MongoDB semplicemente eseguendo il seguente comando:
dnf install mongodb-org -y
Una volta completata l'installazione, avvia il servizio MongoDB e abilitalo all'avvio dopo il riavvio del sistema con il seguente comando:
systemctl start mongod systemctl enable mongod
Ora puoi controllare lo stato del servizio MongoDB usando il seguente comando:
systemctl status mongod
Dovresti vedere il seguente output:
● 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.
Ora, MongoDB è in esecuzione e in ascolto sulla porta 27017. Puoi verificarlo con il seguente comando:
netstat -pnltu | grep 27017
Dovresti ottenere il seguente output:
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2906/mongod
Puoi anche accedere alla shell di MongoDB con il seguente comando:
mongo
Dovresti ottenere il seguente output:
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() ---
Puoi uscire dalla shell di MongoDB con il seguente comando:
>exit
Fase 4:abilita l'autenticazione MongoDB
nano /etc/mongod.conf
Aggiungi la seguente riga alla fine del file:
security: authorization: enabled
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio MongoDB per applicare le modifiche:
systemctl restart mongod
Passaggio 5:crea un utente amministratore MongoDB
Successivamente, dovrai creare un utente amministrativo con tutti i privilegi per eseguire attività amministrative.
Innanzitutto, accedi alla shell MongoDB con il seguente comando:
mongo
Dovresti ottenere il seguente output:
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
Quindi, cambia il database in admin con il seguente comando:
> use admin
Quindi, crea un utente amministratore MongoDB chiamato myadmin con il seguente comando:
> db.createUser( { user: "myadmin", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
Una volta creato l'utente, dovresti ottenere il seguente output:
Successfully added user: { "user" : "myadmin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
Quindi, esci dalla shell di MongoDB con il seguente comando:
>exit
Passaggio 6:verifica dell'autenticazione MongoDB
A questo punto MongoDB è configurato con l'autenticazione. Ora ti verrà richiesto di fornire un nome utente e una password prima di interagire con MongoDB.
Quindi, connetti MongoDB senza autenticazione:
mongo
Dovresti ottenere il seguente output:
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
Ora, esegui il seguente comando per elencare gli utenti MongoDB:
> show users
Dovresti ricevere il seguente errore:
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
Questo dimostra che non puoi elencare gli utenti senza autenticarti.
Ora esci da MongoDB con il seguente comando:
>exit
Fase 7:accedi a MongoDB con l'utente amministrativo
Ora connettiamoci al MongoDB con l'utente amministrativo:
mongo -u myadmin -p --authenticationDatabase admin
Ti verrà chiesto di fornire la tua password di amministratore come mostrato di seguito:
MongoDB shell version v4.2.5 Enter password:
Fornisci la tua password di amministratore e premi Invio . Dovresti ottenere il seguente output:
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
Quindi, cambia il database in admin ed elenca gli utenti con il seguente comando:
> use admin > show users
Dovresti ottenere il seguente output:
{ "_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" ] }
Ora esci dalla shell MongoDB con il seguente output:
> exit
Conclusione
Nella guida sopra, abbiamo imparato come installare MongoDB su CentOS 8. Abbiamo anche mostrato come abilitare l'autenticazione MongoDB e creare un utente amministrativo. Il tuo MongoDB sul tuo VPS Atlantic.Net è ora protetto con nome utente e password:se non hai un VPS da Atlantic.Net, inizia oggi stesso con l'hosting VPS per installare MongoDB!