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.listInstal MongoDB Community Edition
Kita tidak perlu install gnupg di Ubuntu Jammy 22.04, karena gnupg sudah terinstal.
sudo apt update && sudo apt install mongodb-orgUntuk menjalankan agar MongoDB berjalan otomatis saat system startup, jalankan perintah:
sudo systemctl enable mongodUntuk menjalankan service MongoDB jalankan perintah:
sudo systemctl start mongodUntuk melihat status service MongoDB jalankan perintah:
sudo systemctl status mongodWell, 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.confKemudian uncomment atau hapus hashtag pada bagian security dan kemudian tambahkan authorization: enabled, jadi seperti ini:
security:
authorization: enabledPERHATIAN!!!
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 mongodJika 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.
mongoshdarto@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 adminDan 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.
Selanjutnya Anda bisa login dengan perintah:
mongosh -u admin -p --authenticationDatabase adminUser 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 usersUntuk menampilkan semua database:
show dbsUntuk 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.
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 -tlpndarto@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 27017darto@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.








