Instalacja MongoDB w systemie Centos 8
Poniższy poradnik opisuje proces instalacji MongoDB w systemie Centos 8.
Całość jest banalnie prosta i sprowadza się do wykonanaia kilku prostych poleceń.
We wcześniejszych wpisach opisywaliśmy proces instalacji dla Ubuntu 18.04 który znajduje się pod tym wpisem.
Na początek tworzymy repozytorium:
1 | nano/etc/yum.repos.d/mongodb.repo |
Jego zawartość:
1 2 3 4 5 6 | [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/development/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc |
Zapisujemy plik i kodonujemy instalacji samej usługi:
1 | dnf install mongodb-org |
Uruchamiamy go i dodajemy do autostartu:
1 2 | systemctl start mongod systemctl enable mongod |
Sprawdzamy status usługi:
1 | systemctl status mongod |
Wynik:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ?mongod.service-MongoDB Database Server Loaded:loaded(/usr/lib/systemd/system/mongod.service;enabled;vendor preset:disabled) Active:active(running)since Mon2020-01-0303:59:12EDT;5minago Docs:https://docs.mongodb.org/manual Process:737ExecStart=/usr/bin/mongod$OPTIONS(code=exited,status=0/SUCCESS) Process:735ExecStartPre=/usr/bin/chmod0755/var/run/mongodb(code=exited,status=0/SUCCESS) Process:732ExecStartPre=/usr/bin/chown mongod:mongod/var/run/mongodb(code=exited,status=0/SUCCESS) Process:726ExecStartPre=/usr/bin/mkdir-p/var/run/mongodb(code=exited,status=0/SUCCESS) Main PID:914(mongod) Memory:216.1M CGroup:/system.slice/mongod.service ??914/usr/bin/mongod--auth-f/etc/mongod.conf Oct2803:58:14centos8 systemd[1]:Starting MongoDB Database Server... Oct2803:58:28centos8 mongod[737]:about tofork childprocess,waiting until server isready forconnections. Oct2803:58:28centos8 mongod[737]:forked process:914 Oct2803:59:12centos8 mongod[737]:childprocess started successfully,parentexiting Oct2803:59:12centos8 systemd[1]:Started MongoDB Database Server. |
Do mongoDB dostaniemy się wykonując polecenie:
1 | mongo |
Tworzenie użytkownika administracyjnego MongoDB
dostajemy się do MongoDB poleceniem :
1 | mongo |
Następnie przechodzimy na bazę danych o nazwie admin
1 | useadmin |
Wydajemy polecenie utworzenia użytkownika:
1 2 3 4 5 6 7 | db.createUser( { user:"mongodadmin", pwd:"password123", roles:[{role:"userAdminAnyDatabase",db:"admin"}] } ) |
password123 zmieniamy oczywiście na nasze tajne hasło 😉
Powinniśmy otrzymać wynik:
1 2 3 4 5 6 7 8 9 | Successfully added user:{ "user":"mongodadmin", "roles":[ { "role":"userAdminAnyDatabase", "db":"admin" } ] } |
Sprawdzamy użytkowników poleceniem:
1 | show users |
Wynik:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { "_id":"admin.mongodadmin", "userId":UUID("f6e908db-e393-44a9-8c77-0fdb1c2baa0e"), "user":"mongodadmin", "db":"admin", "roles":[ { "role":"userAdminAnyDatabase", "db":"admin" } ], "mechanisms":[ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } |
Konfigurujemy uwierzytelnianie MongoDB
Domyślnie MongoDB umożliwia wszystkim użytkownikom dostęp do powłoki MongoDB i uruchamianie dowolnych poleceń. Dlatego zaleca się skonfigurowanie uwierzytelniania MongoDB, aby uniemożliwić innym użytkownikom uruchamianie komend bez wystarczających uprawnień.
Najpierw musisz włączyć uwierzytelnianie MongoDB, edytując plik
1 | nano/lib/systemd/system/mongod.service |
I ustawiamy tak następującą linijkę:
1 | Environment="OPTIONS= --auth -f /etc/mongod.conf" |
Przeładowujemy usługi:
1 2 | systemctl--system daemon-reload systemctl restart mongod |
Teraz spróbujemy się dostać bez uprawnień:
1 2 3 | mongo useadmin show users |
Zobaczymy błąd
1 2 3 4 5 6 | 2019-10-28T04:13:15.346-0400E QUERY [js]uncaught exception:Error:command usersInfo requires authentication: _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype.getUsers@src/mongo/shell/db.js:1638:15 shellHelper.show@src/mongo/shell/utils.js:883:9 shellHelper@src/mongo/shell/utils.js:790:15 @(shellhelp2):1:1 |
Teraz zalogujemy się poprawnie z uprawnieniami:
1 2 | db.auth('mongodadmin','password123') show users |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | You should see the admin user with their roles inthe following output: { "_id":"admin.mongodadmin", "userId":UUID("f6e908db-e393-44a9-8c77-0fdb1c2baa0e"), "user":"mongodadmin", "db":"admin", "roles":[ { "role":"userAdminAnyDatabase", "db":"admin" } ], "mechanisms":[ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } |