Skip to content
Dokumentatsiya
MongoDB o'rnatish va sozlash

Ubuntu 20.04 serverga MongoDB o'rnatish va sozlash

mongodb

MongoDB (opens in a new tab) - bu MySQL va MariaDB kabi Relational Database Management System (RDBMS) ilovalariga muqobil bo'lgan NoSQL ma'lumotlar bazasi. Ushbu qo'llanma MongoDB bilan tanishtiradi va Ubuntu 20.04 da latest versiyani qanday o'rnatishni tushuntiradi.

MongoDB nima?

MongoDB - bu document-oriented(hujjatga yo'naltirilgan) ma'lumotlar bazasi. U ma'lumotlarni an'anaviy relational ma'lumotlar bazasiga qaraganda ancha moslashuvchan tarzda saqlaydi. U obyektga yo'naltirilgan modellar bilan yaxshi mos keladi va tuzilmagan(unstructured) yoki yarim tizimli(semi-structured) ma'lumotlar uchun yaxshi tanlovdir. MongoDB SQL-ga asoslangan ma'lumotlar bazalariga nisbatan o'rganish va ulardan foydalanish oson deb hisoblanadi. U oson scalability va qo'shimcha zaxiralash uchun taqsimlangan ma'lumotlar bazasi(distributed database) sifatida yaratilgan.

MongoDB NoSQL ma'lumotlar bazasi hisoblanadi, chunki u ma'lumotlarni saqlash va olish uchun Structured Query Language (SQL) foydalanmaydi. Documentlarni o'zgartirish va document ma'lumotlarini olish uchun administratorlar odatda MongoDB Query API dan foydalanadilar. Ular, shuningdek, querylarni oddiy ifodalar yoki JavaScript funksiyalariga asoslashlari mumkin. Bundan tashqari, MongoDB yozuvni table(jadval) ichidagi row(qator) sifatida qo'shmaydi. Binary JSON (BSON) fayl formatidan foydalangan holda documentdagi ma'lumotlarni saqlaydi. BSON - JavaScript Object Notation (JSON) formatining o'zgarishi bo'lib, atribut-qiymat juftliklari ketma-ketligini ikkilik(binary) ma'lumotlarga kodlaydi. Ushbu format saqlash joyini qisqartiradi va o'qish qulayligi hisobiga samaradorlikni oshiradi.

MongoDB documentlari formati nisbatan tuzilmagan(unstructured), shuning uchun har bir document boshqacha bo'lishi mumkin. Yagona haqiqiy cheklov shundan iboratki, document har bir key-value pairini o'z ichiga olgan maydonlar ro'yxatidan iborat bo'lishi kerak. Document sxemasi oldindan belgilanishi shart emas va foydalanuvchilar istalgan vaqtda formatni sozlashlari mumkin. MongoDB bir nechta documentlarni to'plamga birlashtirishi mumkin. MongoDB relational ma'lumotlar bazasi bo'lmaganligi sababli, documentlar yoki collectionlar(to'plam) o'rtasida ko'zda tutilgan aloqalar(connection) mavjud emas.

Jismoniy shaxslar yoki kichik korxonalar uchun mo'ljallangan MongoDB Community Edition bepul foydalanish mumkin. Ilova Server Side Public License (SSPL) ostida ishlatilishi mumkin va manba kodi bepul mavjud. Biroq, SSPL standart open source litsenziyalardan farq qiladi va biroz cheklovchidir. Foydalanuvchilarga litsenziya atrofida biron bir dasturiy ta'minotni ishlab chiqishdan oldin uni yaxshilab tushunish tavsiya etiladi. MongoDB ko'pgina Linux distributivlari uchun Windows va macOS bilan birga mavjud.

MongoDB bilan yanada chuqurroq tanishish, shu jumladan MongoDB va SQL o'rtasidagi taqqoslash uchun MongoDB nima va undan nima uchun foydalaniladi? (opens in a new tab) qo'llanmasiga qarang.

MongoDB o'rnatish

MongoDB o'rnatish jarayoni juda oddiy. Avval rasmiy MongoDB paketini qo'shing va keyin ilovani o'rnatish uchun apt dan foydalaning. MongoDB-ni o'rnatish uchun quyidagi amallarni bajaring.

Eslatma: Standart Ubuntu repositoriyasi bilan ta'minlangan mongodb to'plami rasmiy paket emas va ko'pincha yangilanmaydi. Boshqa ilovalar bilan to'g'ri ishlamasligi mumkin. Ushbu bo'limdagi ko'rsatmalar rasmiy MongoDB paketini qanday o'rnatishni ko'rsatadi. Norasmiy mongodb to'plami o'rnatilganligini tekshirish uchun which mongodb buyrug'ini bajaring. Agar Ubuntu ilovaga yo'lni ko'rsatsa, uni apt yordamida o'chirib tashlang.

  1. gnupg va curl utilitasini o'rnating.
sudo apt-get install gnupg curl
  1. Public MongoDB GPG imzo kalitini(signing key) import qiling. Kalit muvaffaqiyatli import qilinganligini tekshiring.
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
   --dearmor
  1. Ubuntu paketlari ro'yxatiga rasmiy MongoDB repositoriyasi haqida ma'lumot qo'shing.
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
  1. apt yordamida paketlar ro'yxatini yangilang.
sudo apt-get update
  1. MongoDB-ning so'nggi(latest) versiyasini o'rnating.
sudo apt-get install -y mongodb-org

Eslatma: MongoDB-ning ma'lum bir versiyasini o'rnatish uchun, o'rnatish uchun chiqarilganni haqiqiy versiya bilan almashtirib, quyidagi buyruqdan foydalaning.

sudo apt-get install -y mongodb-org=7.0.3 mongodb-org-database=7.0.3 mongodb-org-server=7.0.3 mongodb-mongosh=7.0.3 mongodb-org-mongos=7.0.3 mongodb-org-tools=7.0.3

7.0.3 versiya o'rniga o'zingizga kerakli versiyani tanlab o'rnatib olishingiz mumkin

  1. Ixyiyoriy Joriy konfiguratsiya bilan apt-get buyrug'i har doim yangi versiya mavjud bo'lganda MongoDB ni yangilaydi. Avtomatik yangilanishlarning oldini olish uchun quyidagi buyruqlarni bajaring.
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-database hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-mongosh hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

MongoDB-ni ishga tushirish

MongoDB vazifasi odatda systemctl vositalari yordamida boshqariladi. MongoDB-ni ishga tushirish va yoqish uchun quyidagi amallarni bajaring.

  1. systemctl demonini qayta yuklang.
sudo systemctl daemon-reload
  1. systemctl start yordamida process ishga tushiring.
sudo systemctl start mongod
  1. MongoDB servisi holatini bilish uchun systemctl status dan foydalaning.
sudo systemctl status mongod
  1. Ubuntu-ni tizimni yuklash vaqtida MongoDB-ni avtomatik ishga tushirishni sozlash uchun quyidagi buyruqni kiriting.
sudo systemctl enable mongod
Natija
Created symlink /etc/systemd/system/multi-user.target.wants/mongod.service → /lib/systemd/system/mongod.service.
  1. Ixtiyoriy, agar kerak bo'lsa, quyidagi buyruqlar yordamida MongoDB-ni to'xtatib va qayta ishga tushiring.
sudo systemctl stop mongod
sudo systemctl restart mongod
  1. MongoDB to'g'ri ishlayotganini tasdiqlash uchun shelga kirish uchun mongosh-ni kiriting. Autentifikatsiya hali yoqilmaganligi sababli parol talab qilinmaydi.

Eslatma: Qo'shimcha parametrlarsiz ushbu buyruq local serverdagi default 27017 portida ishlaydigan MongoDB instancega ulanadi. Agar tarmoqqa kirish yoqilgan bo'lsa yoki MongoDB boshqa portga ko'chirilgan bo'lsa, buyruqqa --host 127.0.0.1:27017 qo'shing.

mongosh
Natija
Current Mongosh Log ID:	655782d3c03672d6c9f0e9aa
Connecting to:		mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.0.2
Using MongoDB:		7.0.3
Using Mongosh:		2.0.2

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

MongoDB ni sozlash(konfiguratsiya qilsih)

MongoDB uchun dastur sozlamalari /etc/mongod.conf faylida saqlanadi. Ushbu qiymatlarning aksariyati default qiymatlarda qolishi mumkin. Biroq, xavfsizlikni yaxshilash uchun foydalanuvchi autentifikatsiyasini yoqish muhimdir. MongoDB-dan masofadan foydalanish uchun qo'shimcha o'zgarishlar kiritilishi kerak. Konfiguratsiya fayli opsiyalarining toʻliq roʻyxati uchun MongoDB konfiguratsiya fayli texnik hujjatlariga (opens in a new tab) qarang.

MongoDB autentifikatsiyani yoqish

Autentifikatsiyani yoqish uchun administrator yarating va keyin asosiy konfiguratsiya faylida autentifikatsiya sozlamasini sozlang. Ma'lumotlar bazasini himoya qilish uchun quyidagi amallarni bajaring.

  1. MongoDB shelga kiring.
mongosh
  1. Administrator ma'lumotlar bazasiga o'ting.
use admin
Natija
switched to db admin
  1. Administrator yaratish uchun db.createUser buyrug'idan foydalaning. Foydalanuvchi uchun foydalanuvchi nomini user va pwd uchun parolni kiriting. Yaxshiroq xavfsizlik uchun pwd maydonining qiymati sifatida passwordPrompt() buyrug'idan foydalaning. Bu MongoDB ga parolni so'rashni aytadi. Administratorga ikkita rol bering, userAdminAnyDatabase va readWriteAnyDatabase. MongoDB sheldagi buyruqni quyidagi tarzda kiriting va userAdmin o'rniga haqiqiy administrator nomini almashtiring.
db.createUser(
    {
        user: "userAdmin",
        pwd: passwordPrompt(),
        roles: [
            { role: "userAdminAnyDatabase", db: "admin" },
            { role: "readWriteAnyDatabase", db: "admin" }
        ]
    }
)
  1. Buyruqni kiritgandan so'ng, MongoDB admin parolni so'raydi. So'ralganda parolni kiriting. Agar parol qabul qilinsa, MongoDB ok deb qaytaradi.
Natija
Enter password
********{ ok: 1 }
  1. mongod instanceni o'chirish uchun db.adminCommand buyrug'idan foydalaning.
db.adminCommand( { shutdown: 1 } )
  1. Shelldan chiqing
exit
  1. Konfiguratsiya sozlamalarini qo'shish uchun /etc/mongod.conf konfiguratsiya faylini tahrirlang.
sudo nano /etc/mongod.conf
  1. security: qatorini izohdan olib tashlang: va authorization: enabled qatorini qo'shing. Faylni saqlang va yoping.
/etc/mongod.conf
security:
    authorization: enabled
  1. Restart MongoDB
sudo systemctl restart mongod
  1. MongoDB-ga kirish uchun keyingi barcha urinishlar foydalanuvchi va autentifikatsiya ma'lumotlar bazasi nomini ko'rsatishi kerak. userAdmin o'rniga administrator hisobi nomini almashtiring va so'ralganda administrator parolini kiriting. MongoDB shellga kirish uchun quyidagi buyruqdan foydalaning.

Sinov xizmat kutilganidek ishlayotganligini tekshirib ko'ring. mongo shellga kiring

mongosh

Bu safar siz ogohlantirishlar yo'qolganini kuzatasiz. Biroq, agar siz ma'lumotlar bazalarini ko'rish kabi ma'lumotlar bazasi bilan bog'liq har qanday vazifani bajarishga harakat qilsangiz, autentifikatsiya zarurligini ko'rsatadigan ba'zi natijalarni olasiz.

show dbs

Autentifikatsiya bilan tizimga kirish uchun, avvalo, exit buyruqni ishga tushirish orqali Mongo Shell-dan chiqing. Keyin quyidagi sintaksisdan foydalanib, admin user yordamida tizimga kiring.

mongosh  "mongodb://userAdmin@127.0.0.1:27017"
mongosh --authenticationDatabase "admin" -u "userAdmin" -p

MongoDB uchun masofaviy kirishni yoqish(Remote Access)

Agar boshqacha ko'rsatilmagan bo'lsa, MongoDB faqat local kirishni ta'minlaydi. Ma'lumotlar bazasiga masofaviy kirishni yoqish uchun konfiguratsiya fayliga quyidagi o'zgartirishlarni kiriting.

  1. Asosiy MongoDB konfiguratsiya faylini tahrirlang.
sudo vi /etc/mongod.conf
  1. net sarlavhasi ostida barcha manzillardan ulanishga ruxsat berish uchun bindIp qiymatini 0.0.0.0 ga o'zgartiring. Ushbu manzilga ulanishni cheklash uchun ma'lum bir manzilni kiriting.
/etc/mongod.conf
net:
    port: 27017
    bindIp: 0.0.0.0

Mana mongod.conf ni to'liq ko'rinishi

/etc/mongod.conf
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

security:
  authorization: enabled
#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:
  1. Restart MongoDB.
sudo systemctl restart mongod
  1. Agar ufw firewall yoqilgan bo'lsa, 27017 portiga ulanishga ruxsat bering.
sudo ufw allow 27017

MongoDB-dan qanday foydalanish

MongoDB ko'p jihatdan boshqa ma'lumotlar bazasi tizimlaridan juda farq qiladi va RDBMS foydalanuvchilarini chalkashtirib yuborishi mumkin. Ushbu qo'llanma o'rnatish va sozlashga qaratilgan bo'lsa-da, bu yerda bir nechta qo'shimcha maslahatlar mavjud. Har qanday buyruqni ishga tushirishdan oldin, MongoDB shellga kirish uchun mongosh buyrug'idan foydalaning. Agar kerak bo'lsa, autentifikatsiya ma'lumotlarini qo'shing. MongoDB-dan qanday foydalanish haqida qo'shimcha ma'lumot olish uchun MongoDB texnik hujjatlarini (opens in a new tab) ko'rib chiqing. MongoDB shuningdek, asosiy ma'lumotlarni o'z ichiga olgan qisqa Boshlash qo'llanmasini (opens in a new tab) taqdim etadi. Barcha mavjud ma'lumotlar bazalarini ko'rish uchun show dbs buyrug'idan foydalaning.

show dbs
Natija
admin   180.00 KiB
config   60.00 KiB
local    72.00 KiB

Kontekstni boshqa ma'lumotlar bazasiga o'zgartirish uchun use buyrug'ini qo'llang.

use admin
Natija
switched to db admin

Yangi ma'lumotlar bazasini yaratish uchun maxsus buyruq yo'q. Foydalanish buyrug'i mavjud ma'lumotlar bazasiga o'tadi yoki ma'lumotlar bazasi allaqachon mavjud yoki yo'qligiga qarab yangisini yaratadi. Yangi ma'lumotlar bazasini yaratish uchun use newdatabase kiriting, bu erda newdatabase - qo'shiladigan ma'lumotlar bazasi nomi.

use testguidedb

MongoDB collectionni relational ma'lumotlar bazasidagi tablega o'xshash funksiyaga ega. Collection yaratish uchun db.collectionname.insertOne funksiyasidan foydalaning, bu yerda collectionname collection nomidir. {} qavslar ichida bir qator key-value pairlarini kiriting. Har bir pairni(juftlik), oxirgisidan tashqari, vergul bilan ajrating. Bir vaqtning o'zida bir nechta yozuvlarni kiritish uchun uning o'rniga insertMany buyrug'idan foydalaning. testdata collectioniga ma'lumotlarni qo'shish uchun quyidagi formatdan foydalaning.

db.testdata.insertOne(
    {Value_one: "30",
    Value_two: "40",
    Value_three: "Test"
    }
)

Collectiondan ma'lumotlarni olish uchun db.find buyrug'idan foydalaning. Quyidagi buyruq test ma'lumotlari collectionidagi barcha pairlarni qaytaradi.

db.testdata.find( {} )
Natija
{
    _id: ObjectId("63c56d3dd4cb6182bed3fac3"),
    Value_one: '30',
    Value_two: '40',
    Value_three: 'Test'
}

Muayyan ma'lumotlar bazasidagi barcha collectionlarni ro'yxatga olish uchun `show collections buyrug'idan foydalaning.

show collections
Natija
testdata

Xulosa

MongoDB - bu ma'lumotlarni saqlash bo'yicha katta moslashuvchanlikni ta'minlaydigan document-oriented ma'lumotlar bazasi. Har bir ma'lumotlar bazasida key-value pairlarining erkin shakldagi qatoridan iborat bir yoki bir nechta collection mavjud. MongoDB-ni o'rnatish uchun rasmiy repositoriyani qo'shing, keyin uni o'rnatish uchun apt-dan foydalaning. MongoDB daemonini boshqarish uchun systemctl dan foydalaning va konfiguratsiya fayliga autentifikatsiya yoki masofaviy kirishni qo'llab-quvvatlang. Qo'shimcha ma'lumot olish uchun MongoDB veb-saytiga (opens in a new tab) qarang.

Qo'shimcha