Instal dan Remote MongoDB di Ubuntu Jammy 22.04

Kalau melihat panduan di dokumentasi official MongoDB, saat ini platform yang di support sampai di Focal 20.04 saja sedangkan sekarang Ubuntu sudah upgrade ke Jammy 22.04. Jadi deh kita coba², yakan, hehehe.

Menambahkan Repository MongoDB

Kalau mengikuti di dokumentasinya, menambahkan reposirotynya menggunakan perintah:

wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

Nah, di Ubuntu Jammy 22.04 ternyata perintah ini sudah deprecated, akan ada error seperti ini:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).

Jadinya kita akan menggunakan perintah:

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

Instal MongoDB Community Edition

Kita tidak perlu install gnupg di Ubuntu Jammy 22.04, karena gnupg sudah terinstal.

sudo apt update && sudo apt install mongodb-org

Untuk menjalankan agar MongoDB berjalan otomatis saat system startup, jalankan perintah:

sudo systemctl enable mongod

Untuk menjalankan service MongoDB jalankan perintah:

sudo systemctl start mongod

Untuk melihat status service MongoDB jalankan perintah:

sudo systemctl status mongod

Well, sekarang Ubuntu and CentOS or turunan RedHat udah sama nih, ada enaknya sih hehehe.

Konfigurasi MongoDB

Pengamanan

Untuk pengamanan MongoDB bisa dibilang mudah.

sudo vim /etc/mongod.conf

Kemudian uncomment atau hapus hashtag pada bagian security dan kemudian tambahkan authorization: enabled, jadi seperti ini:

security:
  authorization: enabled

PERHATIAN!!!

Jangan menggunakan tabulasi pada authorization. Tidak mengapa menggunakan spasi.

Setelah disimpan file /etc/mongod.conf restart MongoDB dan cek status servicesnya.

sudo systemctl restart mongod && sudo systemctl status mongod

Jika menggunakan tabulasi di konfigurasi /etc/mongod.conf bisa error seperti ini:

darto@ubuntu:~$ sudo systemctl status mongod
× mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Tue 2022-06-14 18:49:07 WIB; 2s ago
       Docs: https://docs.mongodb.org/manual
    Process: 8552 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=2)
   Main PID: 8552 (code=exited, status=2)
        CPU: 51ms
Jun 14 18:49:07 ubuntu systemd[1]: Started MongoDB Database Server.
Jun 14 18:49:07 ubuntu mongod[8552]: Error parsing YAML config file: yaml-cpp: error at line 31, column 15: illegal map value
Jun 14 18:49:07 ubuntu mongod[8552]: try '/usr/bin/mongod --help' for more information
Jun 14 18:49:07 ubuntu systemd[1]: mongod.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Jun 14 18:49:07 ubuntu systemd[1]: mongod.service: Failed with result 'exit-code'.

Ataupun jika error seperti dibawah ini, bisa jadi ada karakter yang tidak diinginkan, cek ulang, jangan ada spasi setelah security:. Intinya, file konfigurasi di MongoDB menggunakan YAML dan sebetulnya saya belum tahu juga sih YAML itu apa HAHAHA, tapi katanya case sensitive.

darto@ubuntu:~$ sudo systemctl status mongod
× mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Tue 2022-06-14 18:54:09 WIB; 5s ago
       Docs: https://docs.mongodb.org/manual
    Process: 8660 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=2)
   Main PID: 8660 (code=exited, status=2)
        CPU: 32ms
Jun 14 18:54:09 ubuntu systemd[1]: Started MongoDB Database Server.
Jun 14 18:54:09 ubuntu mongod[8660]: Unrecognized option: security
Jun 14 18:54:09 ubuntu mongod[8660]: try '/usr/bin/mongod --help' for more information
Jun 14 18:54:09 ubuntu systemd[1]: mongod.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Jun 14 18:54:09 ubuntu systemd[1]: mongod.service: Failed with result 'exit-code'.

Jika services MongoDB sudah active, lanjut dengan membuat user.

darto@ubuntu:~$ sudo systemctl status mongod
● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-06-15 07:09:04 WIB; 6s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 14134 (mongod)
     Memory: 159.4M
        CPU: 1.480s
     CGroup: /system.slice/mongod.service
             └─14134 /usr/bin/mongod --config /etc/mongod.conf
Jun 15 07:09:04 ubuntu systemd[1]: mongod.service: Consumed 1.945s CPU time.
Jun 15 07:09:04 ubuntu systemd[1]: Started MongoDB Database Server.

Untuk cek services MongoDB active atau tidak, bisa juga menggunakan perintah:

mongo --eval 'db.runCommand({connectionStatus: 1})'
darto@ubuntu:~$ mongo --eval 'db.runCommand({connectionStatus: 1})'
MongoDB shell version v5.0.9
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("213e7f40-c5f7-4f4e-8475-efae6262e53f") }
MongoDB server version: 5.0.9
{
        "authInfo" : {
                "authenticatedUsers" : [ ],
                "authenticatedUserRoles" : [ ]
        },
        "ok" : 1
}

Membuat User

Gunakan perintah mongosh untuk masuk ke MongoDB shell.

mongosh
darto@ubuntu:~$ mongosh
Current Mongosh Log ID: 62a95add363af61d3acd5209
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.5.0
Using MongoDB:          5.0.9
Using Mongosh:          1.5.0
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
Warning: Found ~/.mongorc.js, but not ~/.mongoshrc.js. ~/.mongorc.js will not be loaded.
  You may want to copy or rename ~/.mongorc.js to ~/.mongoshrc.js.
test> 

Masuk ke admin database dengan perintah:

use admin

Dan kita akan membuat user dengan nama admin atau terserah yang Anda inginkan yang nantinya user admin ini akan berfungsi mengelola database.

db.createUser({user: "admin" , pwd: passwordPrompt() , roles: [{ role: "userAdminAnyDatabase" , db: "admin"}, "readWriteAnyDatabase"]})

Setelah Anda tekan Enter, akan ditanya password untuk user admin yang sedang kita buat dengan perintah diatas. Jika sudah, ketik quit atau exit untuk keluar dari MongoDB shell.

Baca juga:  Centos: Install WordPress di LAMP Dengan SELinux

Selanjutnya Anda bisa login dengan perintah:

mongosh -u admin -p --authenticationDatabase admin

User Root

Anda juga bisa membuat user yang memiliki full akses seperti root, yaitu dengan perintah:

db.createUser({user: "mongo-root" , pwd: passwordPrompt() , roles: [{ role: "root" , db: "admin"}]})

Merubah Role

Jika ingin membuat user sebelumnya yang kita buat ingin dijadikan sebagai root, bisa menggunakan perintah:

db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

Menghapus User

db.dropUser("admin", {w: "majority", wtimeout: 5000})

Beberapa perintah yang mungkin berguna selama berada di MongoDB shell.

Untuk menampilkan semua user:

show users

Untuk menampilkan semua database:

show dbs

Untuk melihat statistik semua database bisa menggunakan perintah:

db.adminCommand("top")

Selanjutnya kita akan menggunakan MongoDB Compass untuk remote server MongoDB.

Remote Server MongoDB dari macOS atau Windows

Kalau kita menggunakan server database MySQL, untuk remote melalui web interface kita bisa menggunakan phpMyAdmin. Nah begitu juga dengan server MongoDB, kita bisa remote melalui web interface atau desktop client. Untuk akses MongoDB melalui web interface bisa menggunakan phpMoAdmin atau MongoDB-PHP-GUI. Tapi sejauh pandangan saya, sebagai orang awam yang newbie, sepertinya masih kurang user friendly, hehehe. Atau mungkin ada yang bisa memberikan rekomendasi remote MongoDB menggunakan web interface?

Untuk remote server MongoDB, saya memilih melalui dekstop client dan setelah mencoba dari beberapa software, saya putuskan bahwa yang lebih user friendly adalah MongoDB Compass yang merupakan dari pengembang server MongoDB itu sendiri, ya iyaaaaa laaaahhhh, ya masa kagak.

Baca juga:  Rocky Linux - Cockpit Dengan SSL Let's Encrypt

Agar server MongoDB bisa diakses dari luar kita perlu melakukan satu hal, yaitu mencantumkan IP server dimana terinstal MongoDB kedalam konfigurasinya.

sudo vim /etc/mongod.conf
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,10.0.1.73

Masukkan IP setelah 127.0.0.1 dengan IP server Anda menginstal server MongoDB. Setelah itu restart server MongoDB. Untuk memastikan cek apakah MongoDB sudah berjalan di IP tersebut, dengan perintah:

sudo netstat -tlpn
darto@ubuntu:~$ sudo netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:37431         0.0.0.0:*               LISTEN      1395/chrome --disab 
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      771/systemd-resolve 
tcp        0      0 127.0.0.1:34515         0.0.0.0:*               LISTEN      1279/chrome --disab 
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      14134/mongod        
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      895/mariadbd        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      850/sshd: /usr/sbin 
tcp        0      0 127.0.0.1:40477         0.0.0.0:*               LISTEN      2566/chrome --disab 
tcp        0      0 10.0.1.73:27017         0.0.0.0:*               LISTEN      14134/mongod        
tcp6       0      0 :::22                   :::*                    LISTEN      850/sshd: /usr/sbin 
tcp6       0      0 :::80                   :::*                    LISTEN      907/apache2 

Atau jika ingin mencoba tuk test dari perangkat lain, bisa menggunakan perintah:

nc -zv 10.0.1.73 27017
darto@Dartos-VMwareMac ~ % nc -zv 10.0.1.73 27017
Connection to 10.0.1.73 port 27017 [tcp/*] succeeded!

Setelah semua aman, download MongoDB Compass dan gunakan connection string:

mongodb://admin:<password-anda>@10.0.1.73/

Sesuaikan password dengan yang sudah Anda buat sebelumnya.

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

thirty − = twenty five