Linux işletim sistemine MongoDB kurulumu için öncelikle MongoDB repolarını işletim sistemine eklemeniz gerekmekte.

Linux Redhat / CentOS

1. Adım: /etc/yum.repos.d/mongodb-org.repo dosyasının içerisine aşağıdaki bilgileri eklemeniz gerekmekte. Şu anda son sürüm 4.0 daha sonra farklı bir sürüm çıkarsa eğer o sürüme ait olan repoyu eklemeniz gerekecektir. Güncel MongoDB sürümünü  bu bağlantıdan öğrenebilirsiniz.

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

2. Adım: Kurulum

yum install -y mongodb-org

Ubuntu

1. Adım: MongoDB servisine ait public key bilgisini işletim sistemine import etmemiz gerekiyor

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

2. Adım: /etc/apt/sources.list.d/mongodb-org.list dosyasının içerisine aşağıdaki bilgileri eklememiz gerekmekte.

Ubuntu 14.04 için

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

Ubuntu 16.04 için

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

3. Adım: Paketleri güncelle

sudo apt-get update

4. Adım: Kurulum

sudo apt-get install -y mongodb-org

Konuya CentOS üzerinden devam edeceğim. Kurulum işlemi sonrasında service mongod start komutunu vererek servisi başlatabilirsiniz. MongoDB kurulumu tamamlandı ve kullanıma hazır durumda terminal üzerinden mongo komutunu vererek MongoDB'nin shell ekranına giriş yapabilirsiniz. MongoDB daha önceki konumda da belirttiğim gibi genel olarak shell üzerinden yönetilmekte ve varsayılan kurulumunda herhangi bir kullanıcı adı şifre bilgisi istemeden servise bağlantı sağlanabilmekte. Bu servise dışarıdan da erişmek istiyorsanız eğer iptables ile bağlantı sağlayacak IP adreslerini kısıtlayarak bir önlem alabilirsiniz ve en önemlisi kullanıcı adı ve şifre tanımlayarak MongoDB servisinin güvenliğini artırabilirsiniz.

MongoDB Servisine Kullanıcı Adı ve Şifre Nasıl Tanımlanır?

Öncelikle mongo komutu ile MongoDB'nin komut satırına giriş yapıyoruz.  İlk kurulumda varsayılan olarak admin isimli bir veritabanı da beraberinde gelmektedir. Bu veritabanını seçmemiz gerekiyor.

use admin

Veritabanını seçtikten sonra bu veritabanı için yetkili olacak kullanıcıyı oluşturmamız gerekmekte.

db.createUser(
  {
    user: "kullanıcıadınız",
    pwd: "şifreniz",
    roles: ["readWrite","dbAdmin"]
  }
)

roles kısmında belirtilen bilgiler eklenen kullanıcının yetkileridir. readWrite tüm okuma ve yazma yetkilerini tanımlar, dbAdmin ise en yetkili kullanıcıya ait tanımlamaları sağlar (Windows işletim sistemindeki Administrator kullanıcısı ya da Linux işletim sistemindeki root kullanıcısı gibi).

MongoDB'nin kullanıcı yetkilendirmeleri ile ilgili olarak https://docs.mongodb.com/manual/reference/built-in-roles/#database-administration-roles bu bağlantıdan daha çok bilgi alabilirsiniz.

Kullanıcı tanımlandı ancak veritabanına bağlantı hala kullanıcı yetkilendirmesiyle olmamakta, /etc/mongod.conf dosyası içerisinden yetkilendirme işlemini aktif hale getirerek servisi yeniden başlatmamız gerekmekte. İlgili dosyayı açarak aşağıdaki satırları eklememiz gerekmekte.

security:
authorization: 'enabled'

Bu işlem sonrasında service mongod restart komutu ile servisi yeniden başlatmanız gerekmekte. Bu adımdan sonra veritabanı bağlantısı kullanıcı yetkilendirmesiyle olabilmekte. Ayrıca MongoDB servisine SSL sertifikası kurulumu yaparak bağlantınızı şifreleyebilirsiniz.

MongoDB Servisine SSL Sertifikası Kurulumu Nasıl Yapılır?

SSL sertifikası kurulumu için private key, sertifika keyi ve CA sertifika keyinin bir arada olduğu pem formatında bulunan dosyanın yolunu /etc/mongod.conf dosyası içerisinde belirtmemiz gerekmekte. Bu dosya içerisinde net: bölümü altında ssl seçenekleri belirtilemtedir.

net:
  port: 27017
  bindIp: 0.0.0.0
  ssl:
     mode: requireSSL
     PEMKeyFile: /dosyayolu/sertifika.pem

bindIP değerinin 0.0.0.0 ya da sunucunuzun IP adresi ne ise o şekilde belirtilmesi gerekmekte çünkü bağlantı isteği local olarak değil SSL sertifikasının adresi ile gelecek. Sunucusunda Plesk panel kullananlar SSL sertifikası olarak Plesk servisine kurulan sertifikanın yolunu belirtebilirler. Plesk panelin sertifika yolu aşağıdaki gibidir.

/usr/local/psa/admin/conf/httpsd.pem

Plesk panel servislerine Lets Encrypt ile ücretsiz olarak sertifika kurabilmektesiniz. Maliyet açısından bu şekilde bir kurulum yapmanız cebiniz için daha iyi olacaktır.

Şimdi MongoDB servisine bağlanarak yeni bir veritabanı ve yeni bir kullanıcı oluşturarak veri eklemesi yapalım.

mongo --port 27017 -u kullanıcıadı -p 'şifre' --ssl --host ssl_sertifikanızda_tanımlı_olan_sunucu_adresi --authenticationDatabase admin

Bu komut ile bağlantımızı SSL ve kullanıcı yetkilendirmesi ile gerçekleştirmiş olduk. Yeni veritabanı oluşturmak için use komutunu kullanmamız yeterlidir.

use niyazi

niyazi isminde bir veritabanı oluşturduk. Bu veritabanında bir döküman oluşturarak oraya veri eklemek için de db.alanismi.insert() komutunu kullanıyoruz.

db.deneme.insert({"baslik": "konu başlığı"})

Bu komut deneme isminde bir döküman oluşturarak bu döküman da baslik isimli alanın karşılığı olarak "konu başlığı" değerini eklemiştir.

Buraya kadar her şey tamam ancak bu veritabanına admin kullanıcısı ile bağlıyız, bu veritabanı için yeni bir kullanıcı oluşturalım.

db.createUser({ user: "kullanici", pwd: "şifre", roles: ["readWrite"] })

Artık bu veritabanına yeni olşturulan kullanıcı ve şifre ile bağlantı sağlayabilirsiniz.