MongoDB’ye Ubuntu 18.04 Üzerinden Uzaktan Erişim Yapılandırması
MongoDB, modern uygulamalar için tasarlanmış popüler, açık kaynaklı bir NoSQL veritabanıdır. Esnek şeması, yüksek performansı ve ölçeklenebilirliği sayesinde geliştiriciler ve kuruluşlar arasında hızla benimsenmiştir. Çoğu durumda, MongoDB sunucusu bir sunucuda çalışırken, bu sunucuya başka makinelerden, örneğin uygulama sunucularından, geliştirme ortamlarından veya yönetim araçlarından erişilmesi gerekir. Bu, “uzaktan erişim” olarak bilinir ve doğru bir şekilde yapılandırılması, hem işlevsellik hem de güvenlik açısından kritik öneme sahiptir.
Bu kapsamlı teknik makalede, Ubuntu 18.04 işletim sistemi üzerinde çalışan bir MongoDB örneğine güvenli uzaktan erişimi adım adım nasıl yapılandıracağınızı anlatacağız. Konfigürasyon sürecinde güvenlik duvarı ayarları, MongoDB yapılandırma dosyası değişiklikleri ve kullanıcı kimlik doğrulamasının etkinleştirilmesi gibi temel adımları ele alacağız. Amacımız, hem geliştirme hem de üretim ortamları için sağlam ve güvenli bir uzaktan erişim çözümü sunmaktır.
Ön Koşullar
Bu makaledeki adımları takip etmeden önce aşağıdaki ön koşulların karşılandığından emin olun:
* Ubuntu 18.04 Sunucusu: MongoDB’nin kurulu olduğu bir Ubuntu 18.04 sunucusu. (Bu makale 18.04 için yazılmış olsa da, genel adımlar Ubuntu’nun diğer LTS sürümleri için de büyük ölçüde geçerlidir.)
* MongoDB Kurulu ve Çalışır Durumda: Sunucunuzda MongoDB’nin kurulu ve arka planda çalışır durumda olması gerekmektedir. Kurulum talimatları için MongoDB’nin resmi belgelerine başvurabilirsiniz. Servisin durumunu sudo systemctl status mongod komutuyla kontrol edebilirsiniz.
* sudo Yetkileri: Yapılandırma dosyalarını düzenlemek ve sistem servislerini yönetmek için sudo yetkilerine sahip bir kullanıcı.
* Temel Linux Komut Satırı Bilgisi: Dosya düzenleme, servis yönetimi ve ağ komutları gibi temel Linux komutlarına aşinalık.
* UFW (Uncomplicated Firewall): Ubuntu’da varsayılan olarak gelen veya kolayca kurulabilen bir güvenlik duvarı aracı.
MongoDB’nin Varsayılan Yapılandırmasını Anlama
MongoDB’nin varsayılan kurulumunda, güvenlik amacıyla yalnızca yerel makineden (localhost veya 127.0.0.1) bağlantıları dinleyecek şekilde yapılandırılmıştır. Bu, mongod.conf dosyasındaki bindIp ayarı ile kontrol edilir. Bu ayar, MongoDB’nin hangi IP adresleri üzerinden gelen bağlantıları kabul edeceğini belirler. Varsayılan olarak, bu ayar genellikle bindIp: 127.0.0.1 veya bindIp: localhost şeklindedir.
Bu varsayılan davranış, sunucunun dış dünyadan gelebilecek potansiyel güvenlik tehditlerine karşı korunmasını sağlar. Ancak, uzaktan erişim sağlamak istediğimizde bu ayarı değiştirmemiz gerekecektir. Yapılandırma dosyası genellikle /etc/mongod.conf konumunda bulunur.
Adım 1: Güvenlik Duvarını Yapılandırma (UFW)
Uzaktan erişimi etkinleştirmenin ilk ve en önemli adımı, sunucunuzun güvenlik duvarını yapılandırmaktır. Güvenlik duvarı, sunucunuza hangi ağ trafiğinin girip çıkabileceğini kontrol eden bir yazılımdır. Ubuntu’da bu genellikle UFW (Uncomplicated Firewall) ile yapılır.
UFW Durumunu Kontrol Etme
Öncelikle UFW’nin etkin olup olmadığını ve mevcut kurallarını kontrol edelim:
sudo ufw status verbose
Eğer UFW etkin değilse, çıktıda “Status: inactive” yazısını göreceksiniz. Eğer etkinse, mevcut kuralları listeleyecektir.
UFW’yi Etkinleştirme (Gerekliyse)
Eğer UFW etkin değilse, öncelikle SSH bağlantınızın kesilmemesi için SSH portunu (varsayılan 22) açarak etkinleştirmeniz önerilir:
sudo ufw allow ssh
sudo ufw enable
sudo ufw status verbose
sudo ufw enable komutunu çalıştırdığınızda bir uyarı alabilirsiniz. Bu uyarı, UFW’nin etkinleştirilmesinin mevcut bağlantıları kesebileceği ve SSH bağlantınızın kopmasına neden olabileceğiyle ilgilidir. sudo ufw allow ssh komutu bu riski minimize eder.
MongoDB Portunu Açma
MongoDB’nin varsayılan portu 27017’dir. Bu porta dışarıdan erişime izin vermek için UFW’ye bir kural eklememiz gerekiyor. Bu kuralı eklerken güvenlik düzeyini göz önünde bulundurmalıyız:
* Tüm IP Adreslerinden İzin Verme (Daha Az Güvenli): Bu yöntem, herhangi bir IP adresinden 27017 portuna erişime izin verir. Yalnızca test ortamları veya özel ağlarda kullanılmalıdır.
sudo ufw allow 27017/tcp
* Belirli Bir IP Adresinden İzin Verme (Daha Güvenli): Bu, yalnızca belirli bir istemci makinesinin IP adresinden MongoDB’ye erişim sağlamak için en güvenli yöntemdir. YOUR_CLIENT_IP yerine istemci makinenizin gerçek IP adresini yazın.
sudo ufw allow from YOUR_CLIENT_IP to any port 27017
* Belirli Bir Alt Ağdan İzin Verme (Orta Düzey Güvenli): Eğer birden fazla istemci makinesi aynı alt ağdaysa, tüm alt ağa erişim izni verebilirsiniz. YOUR_SUBNET yerine alt ağınızı (örneğin, 192.168.1.0/24) yazın.
sudo ufw allow from YOUR_SUBNET to any port 27017
Güvenlik açısından, mümkün olduğunca belirli IP adreslerinden erişime izin vermek her zaman tercih edilmelidir.
UFW Kurallarını Yeniden Yükleme ve Doğrulama
Yeni kuralı ekledikten sonra, UFW’nin kuralları yeniden yüklemesine gerek yoktur, çünkü allow komutları anında uygulanır. Ancak, kuralları doğrulamanız önemlidir:
sudo ufw status verbose
Çıktıda 27017 portuna izin veren kuralı görmelisiniz. Örneğin:
To Action From
-- ------ ----
27017/tcp ALLOW Anywhere
22/tcp ALLOW Anywhere
Veya belirli bir IP için:
To Action From
-- ------ ----
27017/tcp ALLOW YOUR_CLIENT_IP
22/tcp ALLOW Anywhere
Adım 2: MongoDB Yapılandırmasını Düzenleme
Güvenlik duvarını yapılandırdıktan sonra, MongoDB’nin dış bağlantıları dinlemesini sağlamak için mongod.conf dosyasını düzenlememiz gerekiyor.
mongod.conf Dosyasını Bulma ve Yedekleme
Yapılandırma dosyasını düzenlemeden önce her zaman bir yedek almak iyi bir uygulamadır:
sudo cp /etc/mongod.conf /etc/mongod.conf.bak
Şimdi dosyayı bir metin düzenleyici ile açın (örneğin nano veya vim):
sudo nano /etc/mongod.conf
bindIp Ayarını Değiştirme
mongod.conf dosyasında net: bölümünü bulun. Bu bölümün altında bindIp ayarını arayın. Varsayılan olarak şöyle görünebilir:
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1 # Listen to local interface only, comment out to listen on all interfaces.
Uzaktan erişime izin vermek için bu ayarı değiştirmemiz gerekiyor:
* Tüm Ağ Arayüzlerinden Dinleme (Önerilen Yöntem – Güvenlik Duvarı ile Birlikte):
bindIp değerini 0.0.0.0 olarak değiştirmek, MongoDB’nin sunucudaki tüm mevcut ağ arayüzlerinden gelen bağlantıları dinlemesini sağlar. Bu, en yaygın ve esnek yaklaşımdır. Ancak, bu ayarı kullanırken mutlaka güvenlik duvarınızın (UFW) doğru şekilde yapılandırıldığından emin olmalısınız. Aksi takdirde, veritabanınız internete tamamen açık kalabilir.
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
Alternatif olarak, bindIp satırını tamamen yorum satırı haline getirebilirsiniz. MongoDB’nin çoğu sürümünde bu da tüm arayüzlerden dinlemesini sağlar, ancak 0.0.0.0 açıkça belirtmek daha anlaşılırdır.
* Belirli IP Adreslerinden Dinleme (Daha Kısıtlı):
Eğer MongoDB’nin yalnızca belirli IP adreslerinden (örneğin, yerel IP ve belirli bir istemci IP’si) bağlantıları dinlemesini istiyorsanız, bu IP adreslerini virgülle ayırarak listeleyebilirsiniz. Örneğin, sunucunuzun dahili IP adresi 192.168.1.100 ise ve istemci IP’si 192.168.1.200 ise:
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,192.168.1.100,192.168.1.200
Bu yöntem, hem bindIp hem de UFW kuralları aracılığıyla iki katmanlı bir güvenlik sağlar. Ancak, 0.0.0.0 ile UFW’yi kullanmak genellikle daha pratiktir, çünkü istemci IP’leri değiştiğinde yalnızca UFW kurallarını güncellemeniz yeterli olur.
Bu makalede, güvenlik duvarı kuralları ile birlikte bindIp: 0.0.0.0 kullanımını temel alacağız, çünkü bu en yaygın ve yönetilebilir yaklaşımdır.
Değişiklikleri Kaydetme ve Çıkma
Nano kullanıyorsanız, Ctrl+O tuşlarına basarak değişiklikleri kaydedin, ardından Enter tuşuna basın ve Ctrl+X ile çıkın.
MongoDB Servisini Yeniden Başlatma
Yapılandırma dosyasında yapılan değişikliklerin etkili olması için MongoDB servisini yeniden başlatmanız gerekir:
sudo systemctl restart mongod
MongoDB Servisinin Durumunu Kontrol Etme
Servisin başarıyla yeniden başlatıldığından ve yeni yapılandırmayı kullandığından emin olmak için durumunu kontrol edin:
sudo systemctl status mongod
Ayrıca, MongoDB’nin artık doğru IP adreslerini dinlediğini netstat komutuyla doğrulayabilirsiniz:
sudo netstat -tulnp | grep mongod
Çıktıda 27017 portunun 0.0.0.0 veya belirttiğiniz IP adresleri üzerinde dinlendiğini görmelisiniz. Örneğin:
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 12345/mongod
Adım 3: MongoDB Kullanıcı Kimlik Doğrulamasını Etkinleştirme ve Yönetme
MongoDB’ye uzaktan erişimi etkinleştirmek, veritabanınızı potansiyel güvenlik risklerine maruz bırakır. Bu riski en aza indirgemek için kimlik doğrulamasını etkinleştirmek ve kullanıcılar oluşturmak kesinlikle zorunludur. Kimlik doğrulaması olmadan, MongoDB sunucunuzdaki herhangi bir kişi, doğru IP adresinden bağlanarak tüm verilerinize tam erişim sağlayabilir.
Kimlik Doğrulamanın Önemi
Kimlik doğrulama, yalnızca yetkili kullanıcıların veritabanına erişmesine izin veren bir güvenlik mekanizmasıdır. MongoDB’de bu, kullanıcı adı ve parola tabanlı bir sistemle sağlanır. Kimlik doğrulaması etkinleştirildiğinde, veritabanına bağlanmaya çalışan her istemcinin geçerli bir kullanıcı adı ve parola sağlaması gerekir.
mongod.conf Dosyasında Kimlik Doğrulamayı Etkinleştirme
Tekrar mongod.conf dosyasını açın:
sudo nano /etc/mongod.conf
security: bölümünü bulun. Eğer yoksa, dosyanın sonuna ekleyebilirsiniz. authorization: enabled satırını etkinleştirin (veya ekleyin):
# security:
security:
authorization: enabled
security: satırının yorum satırı olmadığını ve authorization: enabled satırının doğru girintilendiğini kontrol edin.
MongoDB Servisini Yeniden Başlatma
Yapılandırma değişikliğinin etkili olması için MongoDB servisini tekrar yeniden başlatın:
sudo systemctl restart mongod
Bu noktadan sonra, MongoDB’ye kimlik bilgileri olmadan bağlanmaya çalışırsanız erişim reddedilecektir.
Yönetici Kullanıcı Oluşturma
Kimlik doğrulama etkinleştirildiğinde, henüz hiçbir kullanıcı oluşturulmadığı için MongoDB’ye bağlanmak mümkün olmayacaktır. Bu durum, MongoDB’nin yerel host’tan (127.0.0.1) bağlanıldığında geçici olarak kimlik doğrulaması yapmadan yönetici kullanıcı oluşturmaya izin veren özel bir modda çalışmasını sağlar.
Sunucuya SSH ile bağlanın ve yerel olarak MongoDB kabuğuna girin:
mongo
Bu komut sizi kimlik doğrulaması olmadan yerel olarak bağlamalıdır. Şimdi admin veritabanına geçin ve bir yönetici kullanıcısı oluşturun:
use admin
db.createUser(
{
user: "adminUser",
pwd: "your_very_strong_password",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)
ÖNEMLİ: your_very_strong_password yerine güçlü ve tahmin edilemez bir parola kullanın.
* userAdminAnyDatabase rolü, admin veritabanındaki kullanıcıları yönetme yetkisi verir.
* readWriteAnyDatabase rolü, tüm veritabanlarında okuma ve yazma yetkisi verir. Bu roller, yönetici kullanıcı için uygun yetkilerdir.
Kullanıcıyı oluşturduktan sonra exit komutuyla MongoDB kabuğundan çıkın.
Oluşturulan Yönetici Kullanıcı ile Kimlik Doğrulama
Şimdi oluşturduğunuz yönetici kullanıcısıyla kimlik doğrulaması yaparak MongoDB’ye bağlanmayı deneyin:
mongo -u adminUser -p --authenticationDatabase admin
Parola istendiğinde, az önce oluşturduğunuz parolayı girin. Başarılı bir şekilde bağlanırsanız, MongoDB kabuğuna gireceksiniz. Bağlantı kurduktan sonra show dbs komutunu çalıştırarak veritabanlarını listeleyebilirsiniz.
Diğer Veritabanları İçin Kullanıcı Oluşturma
Uygulama veya diğer hizmetler için, yönetici kullanıcısından farklı ve daha kısıtlı yetkilere sahip kullanıcılar oluşturmanız önerilir (least privilege principle – en az ayrıcalık prensibi). Örneğin, myApplicationDB adlı bir veritabanına yalnızca okuma/yazma erişimi olan bir kullanıcı oluşturalım:
Önce yönetici kullanıcınızla bağlanın:
mongo -u adminUser -p --authenticationDatabase admin
Parolayı girin. Ardından, myApplicationDB veritabanına geçin ve bir kullanıcı oluşturun:
use myApplicationDB
db.createUser(
{
user: "appUser",
pwd: "another_very_strong_password",
roles: [ { role: "readWrite", db: "myApplicationDB" } ]
}
)
Bu appUser kullanıcısı, yalnızca myApplicationDB veritabanında okuma ve yazma işlemlerini gerçekleştirebilir. Diğer veritabanlarına erişimi yoktur. Bu, güvenlik için çok önemlidir.
Adım 4: Uzaktan Bağlantıyı Test Etme
Tüm yapılandırmaları tamamladıktan sonra, bir istemci makinesinden MongoDB sunucunuza uzaktan bağlanmayı test etme zamanı.
MongoDB Shell ile Uzaktan Bağlantı
İstemci makinenizde (MongoDB Shell’in kurulu olduğu bir makine), aşağıdaki komutu kullanarak bağlanmayı deneyin:
mongo --host YOUR_SERVER_IP --port 27017 -u adminUser -p --authenticationDatabase admin
* YOUR_SERVER_IP: MongoDB sunucunuzun genel veya özel IP adresi.
* adminUser: Oluşturduğunuz yönetici kullanıcı adı.
* --authenticationDatabase admin: Kullanıcının admin veritabanında tanımlandığını belirtir.
Parola istendiğinde yönetici parolanızı girin. Başarılı bir şekilde bağlanırsanız, uzaktan erişim yapılandırmanız doğru çalışıyor demektir.
Uygulama kullanıcısı ile bağlanmak için:
mongo --host YOUR_SERVER_IP --port 27017 -u appUser -p --authenticationDatabase myApplicationDB
Burada myApplicationDB yerine uygulamanızın kullanacağı veritabanı adını yazın.
Programatik Olarak Bağlantı (Örnek Python)
Çoğu zaman, bir uygulama sunucusundan veya geliştirme ortamından programatik olarak bağlanmanız gerekecektir. İşte Python’ın pymongo sürücüsü ile basit bir örnek:
Önce pymongo‘yu yükleyin (eğer yüklü değilse):
pip install pymongo
Ardından, Python kodunuzda aşağıdaki gibi bağlanabilirsiniz:
from pymongo import MongoClient
from pymongo.errors import ConnectionFailure, OperationFailure
MongoDB sunucunuzun IP adresi ve portu
MONGO_HOST = 'YOUR_SERVER_IP'
MONGO_PORT = 27017
Yönetici kullanıcısı ile bağlantı örneği
ADMIN_USER = 'adminUser'
ADMIN_PASS = 'your_very_strong_password'
ADMIN_AUTH_DB = 'admin'
Uygulama kullanıcısı ile bağlantı örneği
APP_USER = 'appUser'
APP_PASS = 'another_very_strong_password'
APP_DB_NAME = 'myApplicationDB' # Bağlanmak istediğiniz veritabanı
APP_AUTH_DB = 'myApplicationDB' # Kullanıcının tanımlandığı veritabanı (genellikle aynıdır)
try:
# Yönetici kullanıcısı ile bağlanma
print(f"Admin kullanıcısı ile {MONGO_HOST}:{MONGO_PORT} adresine bağlanılıyor...")
client_admin = MongoClient(
host=MONGO_HOST,
port=MONGO_PORT,
username=ADMIN_USER,
password=ADMIN_PASS,
authSource=ADMIN_AUTH_DB # Kullanıcının tanımlandığı veritabanı
)
# Bağlantıyı test et
client_admin.admin.command('ping')
print("Admin bağlantısı başarılı!")
# Veritabanlarını listele (yetkili olduğu için)
print("Mevcut veritabanları:", client_admin.list_database_names())
client_admin.close()
print(f"\nUygulama kullanıcısı ile {APP_DB_NAME} veritabanına bağlanılıyor...")
# Uygulama kullanıcısı ile belirli bir veritabanına bağlanma
client_app = MongoClient(
host=MONGO_HOST,
port=MONGO_PORT,
username=APP_USER,
password=APP_PASS,
authSource=APP_AUTH_DB # Kullanıcının tanımlandığı veritabanı
)
# Belirli veritabanına erişim
db = client_app[APP_DB_NAME]
# Koleksiyonları listele (yetkili olduğu için)
print(f"{APP_DB_NAME} veritabanındaki koleksiyonlar:", db.list_collection_names())
client_app.close()
print("\nTüm bağlantı testleri başarılı.")
except ConnectionFailure as e:
print(f"Bağlantı hatası: {e}")
print("Lütfen IP adresini, portu ve güvenlik duvarı ayarlarını kontrol edin.")
except OperationFailure as e:
print(f"Kimlik doğrulama veya işlem hatası: {e}")
print("Lütfen kullanıcı adı, parola ve yetkilendirme veritabanı bilgilerini kontrol edin.")
except Exception as e:
print(f"Beklenmeyen bir hata oluştu: {e}")
Bu örnek, hem yönetici hem de uygulama kullanıcısı ile nasıl bağlantı kurulacağını gösterir. authSource parametresi, kullanıcının hangi veritabanında tanımlandığını belirtmek için önemlidir.
Güvenlik Önemleri ve En İyi Uygulamalar
MongoDB’ye uzaktan erişimi yapılandırırken güvenliği her zaman ön planda tutmak çok önemlidir. Aşağıdaki en iyi uygulamaları takip etmek, veritabanınızı olası tehditlere karşı korumanıza yardımcı olacaktır:
Güçlü Parolalar Kullanın
Tüm MongoDB kullanıcıları için karmaşık, benzersiz ve uzun parolalar kullanın. Parolalar büyük/küçük harf, rakam ve özel karakterler içermelidir. Asla varsayılan veya kolay tahmin edilebilir parolalar kullanmayın.
En Az Ayrıcalık Prensibi (Least Privilege Principle)
Her kullanıcıya veya uygulamaya yalnızca işlerini yapmak için kesinlikle ihtiyaç duydukları minimum yetkileri verin. Örneğin, bir uygulamanın yalnızca belirli bir veritabanında okuma ve yazma erişimine ihtiyacı varsa, ona yalnızca bu yetkileri veren bir rol atayın. Asla bir uygulamaya gereksiz yere yönetici yetkileri vermeyin.
Ağ Güvenliği (Firewall)
* Sadece Gerekli IP’lere Erişim İzni Verin: Güvenlik duvarınızı (UFW) yalnızca MongoDB’ye erişmesi gereken belirli IP adreslerinden veya IP aralıklarından gelen bağlantılara izin verecek şekilde yapılandırın. 0.0.0.0 kullanmaktan kaçının, eğer yapabiliyorsanız. Eğer 0.0.0.0 kullanıyorsanız, UFW kurallarınızın son derece kısıtlayıcı olduğundan emin olun.
* VPN veya SSH Tünelleme Kullanmayı Düşünün: Daha yüksek güvenlik gerektiren ortamlar için, MongoDB’ye doğrudan erişmek yerine bir VPN (Virtual Private Network) veya SSH tünelleme üzerinden bağlanmayı düşünebilirsiniz. Bu, tüm trafiği şifreler ve yalnızca VPN veya SSH tüneli üzerinden gelen bağlantılara izin verir.
TLS/SSL Şifrelemesi
Veritabanı sunucusu ile istemci arasındaki tüm veri iletişimini şifrelemek için TLS/SSL kullanın. Bu, ağdaki verilerin dinlenmesini veya değiştirilmesini önler. MongoDB, TLS/SSL’yi destekler ve üretim ortamlarında kullanılması şiddetle tavsiye edilir. Bu makalenin kapsamı dışında olsa da, güvenli bir dağıtım için araştırılması gereken kritik bir konudur.
Düzenli Güncellemeler
MongoDB sunucunuzu ve Ubuntu işletim sisteminizi düzenli olarak güncelleyin. Yazılım güncellemeleri genellikle güvenlik açıklarını kapatan yamalar içerir.
sudo apt update
sudo apt upgrade
Log Kayıtlarını İzleme
MongoDB’nin log dosyalarını (/var/log/mongodb/mongod.log) düzenli olarak izleyin. Anormal bağlantı girişimleri, kimlik doğrulama hataları veya diğer şüpheli aktiviteler güvenlik sorunlarının erken göstergeleri olabilir.
Yedekleme Stratejisi
Verilerinizin güvenliğini sağlamak için düzenli ve güvenilir bir yedekleme stratejisi uygulayın. mongodump gibi araçları kullanarak veritabanınızın yedeklerini alın ve bu yedekleri güvenli bir yerde saklayın.
Sorun Giderme (Troubleshooting)
Uzaktan erişim yapılandırılırken karşılaşılabilecek yaygın sorunlar ve çözümleri:
Bağlantı Reddedildi (Connection Refused)
* Güvenlik Duvarı (UFW): İstemci makinenizin IP adresinin veya tüm 27017 portunun UFW tarafından engellenmediğinden emin olun. sudo ufw status verbose komutuyla kontrol edin ve gerekirse kural ekleyin.
* bindIp Ayarı: mongod.conf dosyasındaki bindIp ayarının 0.0.0.0 veya istemci IP’sini içerecek şekilde doğru yapılandırıldığından emin olun.
* MongoDB Servisi Çalışıyor mu?: sudo systemctl status mongod komutuyla MongoDB servisinin çalışıp çalışmadığını kontrol edin. Çalışmıyorsa, sudo systemctl start mongod ile başlatın.
* Yanlış Port: İstemcinizin doğru porta (varsayılan 27017) bağlandığından emin olun.
Kimlik Doğrulama Hatası (Authentication Failed)
* Kullanıcı Adı/Parola: Kullanıcı adının ve parolanın doğru olduğundan emin olun. Parolalar büyük/küçük harfe duyarlıdır.
* authenticationDatabase: mongo kabuğu veya uygulama sürücüsü ile bağlanırken --authenticationDatabase parametresinin doğru veritabanını işaret ettiğinden emin olun (yani, kullanıcının oluşturulduğu veritabanı).
* Kullanıcının Rolleri: Kullanıcının bağlanmaya çalıştığı veritabanı için gerekli rollere sahip olduğundan emin olun. Örneğin, bir veritabanına yazmak istiyorsa readWrite rolüne sahip olmalıdır.
* Kimlik Doğrulama Etkinleştirildi mi?: mongod.conf dosyasında authorization: enabled ayarının doğru yapıldığından emin olun.
mongod Servisi Başlamıyor
* mongod.conf Dosyasında Syntax Hatası: sudo systemctl status mongod veya sudo journalctl -xe komutlarını kullanarak MongoDB loglarını kontrol edin. Yapılandırma dosyasında bir yazım hatası veya yanlış girinti olabilir. Özellikle YAML formatının girintilemeye duyarlı olduğunu unutmayın.
* Log Dosyalarını Kontrol Edin: MongoDB’nin log dosyası (/var/log/mongodb/mongod.log) başlatma sorunları hakkında ayrıntılı bilgi sağlayacaktır.
Sonuç
Bu makalede, Ubuntu 18.04 üzerinde çalışan bir MongoDB sunucusuna güvenli uzaktan erişimi adım adım nasıl yapılandıracağınızı öğrendiniz. Güvenlik duvarı kurallarını ayarlayarak, MongoDB yapılandırma dosyasını düzenleyerek ve en önemlisi kullanıcı kimlik doğrulamasını etkinleştirerek, veritabanınıza dışarıdan güvenli bir şekilde erişim sağlayabilirsiniz.
Unutmayın ki güvenlik, sürekli bir süreçtir. Veritabanı sisteminizi düzenli olarak izlemeli, güncellemeleri uygulamalı ve güvenlik en iyi uygulamalarını takip etmelisiniz. Bu adımları dikkatlice uygulayarak ve güvenlik önlemlerini göz ardı etmeyerek, MongoDB veritabanınızı uzaktan erişime açarken verilerinizin güvenliğini sağlayabilirsiniz. Bu yapılandırma, geliştirme, test ve hatta üretim ortamlarında sağlam bir temel oluşturacaktır.
