تحدثنا في هذه المدونة عن بعض أنظمة قواعد البيانات ، من بينها أنظمة MariaDB و MySQL الأكثر شيوعًا ، نظرًا لأنها الأنظمة التي يتم تضمينها عادةً في Xampp أو Lampp. هذه المرة سوف نتحدث عنها نظام آخر وهو MongoDB.
MongoDB هو مستند مفتوح المصدر موجه لنظام قاعدة بيانات NoSQL، هذا هو نظام حديث لإدارة قاعدة بيانات المستندات مصمم لاستمرارية البيانات عالية الأداء ، التوافر العالي ، بالإضافة إلى القياس التلقائي ، بناءً على تقنية تقنية NoSQL.
بدلاً من حفظ البيانات في الجداول كما هو الحال في قواعد البيانات العلائقية ، يحفظ MongoDB هياكل البيانات في المستند، وهي بنية بيانات تتكون من أزواج الحقول والقيمة (مستندات MongoDB قابلة للمقارنة مع كائنات JSON).
نظرًا لأنه يوفر أداءً عاليًا وخصائص قابلية توسعة ممتازة ، يتم استخدامه لبناء تطبيقات حديثة تتطلب قواعد بيانات قوية وحاسمة للمهام ومتاحة للغاية.
تثبيت MongoDB على أوبونتو
لتثبيت نظام قاعدة البيانات هذا على نظامنا ، علينا فقط فتح Terminal وتنفيذ الأمر التالي فيه:
sudo apt install mongodb
تم التثبيت ، ستبدأ خدمة MongoDB تلقائيًا عبر systemd وستعمل العملية على المنفذ 27017. يمكنك التحقق من حالتها باستخدام الأمر:
sudo systemctl status mongodb
إذا لم يكن الأمر كذلك ، فيمكننا البدء بهذا الأمر:
sudo systemctl start mongodb
تمكين الاتصالات عن بعد لـ MongoDB
يستخدم نظام قاعدة بيانات MongoDB افتراضيًا المنفذ 27017 الذي يجب علينا فتحه لقبول الاتصالات عن بعد ، نقوم بتمكينها فقط بالأمر التالي.
sudo ufw allow 27017
بشكل افتراضي ، لا يمكن الوصول إلى المنفذ 27017 إلا من العنوان المحلي 127.0.0.1. للسماح بالاتصالات عن بُعد بـ MongoDB ، من الضروري إضافة عنوان IP الخاص بالخادم في الملف /etc/mongodb.conf
فقط قم بتحريره باستخدام:
sudo nano
ويمكننا أن نرى شيئًا مشابهًا لهذا:
bind_ip = 127.0.0.1, your_server_ip #port = 27,017
التي نقوم بتحريرها مع البيانات من خادمنا.
من خلال السماح بالوصول إلى MongoDB من كل مكان ، فإنه يوفر وصولاً غير مقيد إلى البيانات الموجودة في قاعدة البيانات. لذلك ، من الأفضل منح حق الوصول إلى عنوان IP الافتراضي الخاص بالموقع لمنفذ MongoDB.
sudo ufw allow from your_server_IP/32 to any port 27017 sudo ufw status
بمجرد الانتهاء من ذلك ، يكفي إعادة تشغيل الخدمة بحيث يتم تحميل التغييرات الجديدة في البداية ، وهذا ما نقوم به:
sudo systemctl restart mongodb
قم بإنشاء مستخدم في MongoDB بكلمة مرور
بشكل افتراضي ، تتمتع قاعدة البيانات بوصول بسيط للغاية ، لذا لتعزيز ذلك يمكننا إنشاء مستخدم بكلمة مرور.
يستخدم MongoDB آلية مصادقة SCRAM بشكل افتراضي. يتحقق استخدام SCRAM على النظام من بيانات اعتماد المستخدم المقدمة مقابل اسم المستخدم وكلمة المرور وقاعدة بيانات المصادقة.
ما عليك سوى بدء تشغيل وحدة التحكم في قاعدة البيانات باستخدام الأمر التالي:
Mongo
يمكننا عمل قائمة بقواعد البيانات الموجودة باستخدام:
show dbs
يمكننا إنشاء مستخدم يسمح لنا بإدارة المستخدمين والوظائف مثل إنشاء المستخدمين ، ومنح أو إبطال أدوار المستخدم ، وإنشاء أو تعديل الأدوار الجمركية.
فقط اكتب
use admin
وننشئ المستخدم بالأمر التالي، حيث نستبدل اسم المستخدم "root" وكلمة المرور "password" ، من خلال crecenciales الوصول التي نراها مناسبة.
db.createUser({user:"root", pwd:"password", roles:[{role:"root", db:"admin"}]})
بمجرد الانتهاء من ذلك ، يجب علينا تمكين طريقة المصادقة لهذا سنقوم بتحرير الملف التالي:
sudo nano /lib/systemd/system/mongodb.service
وسنبحث عن السطر التالي:
ExecStart=/usr/bin/mongod --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
و تحرير بحيث يكون كما يلي:
ExecStart=/usr/bin/mongod --auth --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
الآن نحن ببساطة نعيد التشغيل في قاعدة البيانات
systemctl daemon-reload sudo systemctl restart mongodb sudo systemctl status mongodb
Y نقوم باختبار طريقة المصادقة باستخدام:
mongo -u "usuario" -p --authenticationDatabase "contraseña"
ساعدني في حل هذا الخطأ.
2021-03-24T21: 33: 16.233 + 0000 E QUERY [thread1] خطأ: فشل listDatabases: {
«حسنًا»: 0 ،
"Errmsg": "غير مخول للمسؤول لتنفيذ الأمر {listDatabases: 1.0، $ db: \" admin \ "}"،
"الرمز": 13 ،
"CodeName": "غير مصرح به"
}:
_getErrorWithCode@src/mongo/shell/utils.js: 25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js: 65: 1
shellHelper.show@src/mongo/shell/utils.js: 816: 19
shellHelper@src/mongo/shell/utils.js: 706: 15
@ (shellhelp2): 1: 1