قم بإعداد قاعدة بيانات MySQL أو MariaDB

قم بإعداد قاعدة بيانات MySQL أو MariaDB

قم بإعداد قاعدة بيانات MySQL أو MariaDB

خادم ويب إنترنت الأشياءHTTP POST خادم ويب إنترنت الأشياءقاعدة بيانات ماي إس كيو إل. خادم ويب إنترنت الأشياءخادم ويب لغة PHP وإنترنت الأشياء

تكوين خادم قاعدة البيانات

بمجرد تثبيت مجموعة الخدمات LAMP, المزج, MAMP o XAMPP كما هو موضح في المقالة الأولى من السلسلة أو ببساطة بعد التثبيت على الجهاز الذي سيعمل كخادم، مجموع التطبيقات التي تنفذ الخدمات المقابلة، من الضروري ضبط بعض جوانب تكوين خادم قاعدة البيانات MySQL وكذلك إنشاء قواعد البيانات والجداول التي سيتم استخدامها على خادم الويب لتخزين البيانات من أجهزة إنترنت الأشياء.

إذا تم استخدام خادم عام، فمن المؤكد أن الموفر قد قدم نوعًا من اللوحة للتوسط بين المستخدم والتكوين "الحقيقي" لقاعدة البيانات من أجل تعزيز الأمان في العملية. إذا كان الأمر كذلك، فسيتعين عليك الرجوع إلى التعليمات التي يقدمها هذا المزود. في حالة وجود خادم حقيقي أو افتراضي مستضاف في مرافق طرف ثالث، قد تنشأ ظروف مماثلة عندما يديره المزود؛ إذا تم التعاقد مع خادم غير مُدار (من قبل الموفر، ويديره المستخدم)، فسيتم تطبيق المعلومات التالية.

وبما أن الشيء المهم هو معرفة التعليمات التي يجب تقديمها لمدير قاعدة البيانات ومن المفهوم أنها تستخدم كوسيلة لدعم أجهزة إنترنت الأشياء، والتي ستكون موضوع المشروع، فقد يكون من الممكن يكفي استخدام وحدة التحكم نظرًا لأن العمل على خادم قاعدة البيانات نفسه سيكون عرضيًا. إذا بدأ عبء عمل الإدارة في الزيادة، فقد يكون الأمر يستحق ذلك، لأنه أكثر ملاءمة، لاستخدام مدير على الخادم نفسه، مثل البرنامج الشهير بريس (من متصفح الويب) أو محليًا، على الرغم من الوصول بالطبع إلى خادم قاعدة البيانات، مع مسؤول مثل الخلية منضدة من خلالها لأداء في المتقدمة GUI العمليات التي سيتم شرحها وغيرها الكثير خارج هذه المقالة والتي تستحق سلسلة كاملة.

لوحة إدارة MySQL Workbench

بالإضافة إلى العمليات التلقائية التي يمكن إجراؤها بشكل أو بآخر الخلية منضدة على الخادم أو قواعد البيانات أو الجداول، من الممكن أيضًا تنفيذ المهام "يدويًا" عن طريق كتابة وتنفيذ نصوص برمجية كاملة أو أوامر مستقلة في SQL. كما هو الحال مع الأداة الخلية منضدة, SQL يتطلب فصلاً منفصلاً والذي سيكون من الضروري معرفته بعمق عندما يتضمن الجزء الذي يتم تنفيذه من عمل ويب إنترنت الأشياء اهتمامًا أكثر جدية بـ الخلفية مما هو موضح هنا.

MySQL Workbench محرر استعلام SQL

على أية حال، وبالطبع لحل التكوين الضروري لقاعدة بيانات إنترنت الأشياء التي تتم معالجتها، يمكن استخدام وحدة التحكم.

قم بتكوين الجذر، مسؤول MySQL الرئيسي

إذا كان خادم قاعدة البيانات موجودًا على جهاز خاص به، فإن أول ما يجب فعله هو تكوين أذونات مسؤول الخدمة لتتمكن من إنشاء مستخدمين آخرين، باستخدام هذه الامتيازات (والذين قد يمتلكونها بدورهم)، وقواعد البيانات والجداول، إن أمكن حيث يتم تخزين المعلومات التي يحتاجها نظام إنترنت الأشياء.

من المهم الاهتمام بعملية تثبيت مجموعة الخدمات أو الخادم MySQL، اعتمادًا على العملية المتبعة، لأنه في كثير من الحالات، سيكون المثبت نفسه هو المسؤول عن تنفيذ هذه الخطوة وغيرها ولن يكون من الضروري تكرارها إلا عندما تريد تعديل التكوين.

لتنفيذ هذه المهام، عادةً ما تعمل باستخدام وحدة التحكم. MySQL كمسؤول. للوصول إلى هذا الوضع، استخدم الأمر mysql -u root -p o sudo mysql -u root إذا تم استخدامه لأول مرة وأثناء التثبيت، لم يتم تكوين المستخدم root

تكوين مستخدم MySQL الجذر من وحدة التحكم

في النظام mysql -u root -p المشار إليه مع الخيار -u اسم المستخدم (root) ومع الخيار -p (كلمة المرور) أنه يجب طلب المفتاح عند الوصول إلى وحدة التحكم MySQL. للعودة إلى وحدة تحكم النظام، يمكنك استخدام الأمر quit للخروج

كما هو موضح في لقطة الشاشة أعلاه، قبل مغادرة وحدة التحكم MySQL، لتعيين امتيازات المستخدم root تم استخدام الأمر:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
بحيث:

  • يتم منح جميع الامتيازات GRANT ALL PRIVILEGES
  • في كافة الجداول في كافة قواعد البيانات ON *.*
  • إلى المستخدم root الوصول من الجهاز الذي يقوم بتشغيل الخادم MySQL TO 'root'@'localhost'
  • باستخدام 1234 ككلمة مرور IDENTIFIED BY '1234'
  • مع الإذن بتفويض مستخدمين آخرين WITH GRANT OPTION

من أجل إدارة قاعدة البيانات عن بعد، يجب منح الامتيازات للمستخدم المقابل من مواقع أخرى. وفي المثال السابق كان مسموحا root يتم الوصول إليها من الجهاز الذي يعمل عليه خادم قاعدة البيانات (localhost) مع 'root'@'localhost'، إذا ما استخدمت 'root'@'%' سيتم السماح بالوصول من أي جهاز.

إذا كانت لديك امتيازات المسؤول على النظام، فيمكنك إعادة إنشاء كلمة مرور المستخدم root de MySQL. للقيام بذلك، من الضروري إيقاف الخدمة (mysql o mysqld، اعتمادًا على التوزيع)، قم بتشغيله بدون مفتاح، وقم بتعيين المفتاح الجديد root وأعد تشغيله. من خلال الوصول بدون كلمة مرور، من الممكن أيضًا منح الامتيازات الموضحة أعلاه.

  • إيقاف الخدمة sudo /etc/init.d/mysql stop
  • رمي MySQL بدون مفتاح وفتح وحدة التحكم sudo mysqld_safe --skip-grant-tables &
  • الوصول باسم «root» mysql -u root
  • تغيير كلمة المرور:
    • الوصول إلى قاعدة البيانات «mysql": USE mysql;
    • يسند إلى "root» المفتاح «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • تطبيق الامتيازات الجديدة: FLUSH PRIVILEGES;
    • وحدة التحكم بالخروج mysql والعودة إلى النظام: quit
  • أعد تشغيل الخدمة sudo /etc/init.d/mysql restart

تكوين الوصول إلى قاعدة البيانات عن بعد

لأسباب أمنية، التكوين الأولي لمدير قاعدة البيانات MySQL لا يسمح بالوصول عن بعد، لتغييره من الضروري تحرير مستند التكوين بشكل طبيعي my.cnf، والذي عادة ما يتم العثور عليه على الطريق /etc/mysql.

إذا ما استخدمت MariaDB ل، وهو الآن الإصدار "الأكثر حرية" من MySQL، بالتاكيد my.cnf سيكون رابطا ل /etc/alternatives/my.cnf والتي بدورها ستقوم بتحميل التكوين باستخدام !includedir، من وثائق الطريق /etc/mysql/mariadb.conf.d، ربما من الوثيقة 50-server.cnf

المورد الذي يستخدمه خادم قاعدة البيانات لعدم حضور الطلبات عن بعد يتكون من "الاستماع" فقط للطلبات المقدمة من موقع معين. عنوان IP والتي يتم التعبير عنها كقيمة المعلمة bind-address (الذي يحل محل الكلاسيكية skip-networking) عندما يكون العنوان 127.0.0.1 (localhost) يتم الاهتمام فقط بالطلبات الواردة من الجهاز المحلي. إذا علق مع # أو إذا كانت القيمة 0.0.0.0، نحن نخدم أي عنوان. للسماح بالوصول الخارجي، الشيء الأكثر أمانًا هو الإشارة إلى عنوان IP (والتي يمكن أن تكون عامة أو خاصة) لجهاز الكمبيوتر الذي يتم الوصول إليه منه، وعادةً ما يشبه ذلك bind-address = 192.168.1.74. في حالتك، يمكن أن يكون هذا الجهاز بمثابة نفق (إعادة التوجيه مع SSH) أو كممشى (مع جداول الملكية الفكرية الأساسية) لتجنب تعريض الخادم خارج منطقة خاضعة للتحكم في الشبكة.

تكوين قاعدة بيانات MySQL عن طريق تحرير ملف my.cnf (في MySQL وما إلى ذلك)

في لقطة الشاشة أعلاه، يمكنك أن ترى أنه تم تعديلها my.cnf مع التكوين MySQL باستخدام النظام sudo nano /etc/mysql/my.cnf. في حالة العمل مع MariaDB ل مع التكوين المعتاد، سيكون الترتيب شيء من هذا القبيل sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. كما ذكر أعلاه، بمجرد الوصول إلى الامتيازات الإدارية، أ GUI كما الخلية منضدة لإدارة قواعد البيانات العادية.

إنشاء قواعد البيانات

بمجرد تكوين خادم قاعدة البيانات، يمكن إنشاء قواعد البيانات والجداول التي سيتم تخزين بيانات إنترنت الأشياء فيها. للقيام بذلك، يمكنك استخدام الأوامر SQL من وحدة التحكم أو من GUI من مدير.

الأمر - الطلب CREATE DATABASE temperaturas; يقوم بإنشاء قاعدة بيانات "درجات الحرارة" ولتجنب الأخطاء يمكن استخدام النموذج CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; والتي من شأنها إنشاء قاعدة البيانات "temperature_database" فقط إذا لم تكن موجودة حاليًا.

إنشاء الجداول

كما هو الحال في قواعد البيانات المختلفة، يمكن أن يكون هناك جداول بنفس الاسم، يمكنك الإشارة إلى أحدهما عن طريق وضع اسمه قبل اسم قاعدة البيانات والفصل بينهما بنقطة، مثل base_datos.tabla يمكن أيضًا توسيع هذا الترميز ليشمل أسماء الحقول base.tabla.campo

إذا تم حذف اسم قاعدة البيانات عند العمل على جدول (في هذه الحالة، عند إنشائه)، فسيتم اعتبار أن الاسم الأخير المحدد هو المشار إليه. لتحديد خيار محدد بشكل صريح، يمكنك استخدام الأمر USE والإشارة إلى اسمك USE base_datos_temperaturas;

عند إنشاء الجداول في قواعد البيانات، في نفس العملية، عادةً ما تتم إضافة معلومات الحقول التي تشكل هذه الجداول (على الرغم من أنه من الممكن أيضًا تغييرها لاحقًا). وكما هو الحال مع قاعدة البيانات، لا يمكن إنشاء الجدول إلا إذا كان لا وجود لإضافة الجملة IF NOT EXISTS أو على العكس تأكد من حذف الجدول قبل إنشائه فقط في حالة وجوده باستخدام DROP TABLE IF EXISTS valor_temperaturas;

للسماح بأسماء الجداول أو قواعد البيانات التي قد تتعارض مع الأوامر أو الإجراءات، يمكن استخدام علامة التشكيل الخطيرة، والتي تسمى أحيانًا بالفاصلة المقلوبة، لإحاطة الاسم وتجنب التعارضات أو الأخطاء في الأوامر. SQL.

تحديد الحقول

تتم الإشارة إلى الحقول التي تتم إضافتها عند إنشاء الجدول من خلال وضعها بين قوسين والإشارة إلى نوع البيانات التي تخزنها. أنواع البيانات المستخدمة عادةً في قاعدة البيانات لتخزين المعلومات من الأجهزة المتصلة بإنترنت الأشياء هي أعداد صحيحة (INT o BIGINT) الكسور العشرية (DECIMAL, DOUBLE o FLOAT) من الوقت (DATE, TIME, DATETIME o TIMESTAMP) والنص (بشكل أساسي VARCHAR على الرغم من أن هناك آخرين مثل TEXT ولكنها لا تستخدم لإنترنت الأشياء) بعد نوع البيانات، وبين قوسين، تتم إضافة طول البيانات، وإذا أمكن، التنسيق أو الدقة.

بإضافة AUTO_INCREMENT يشير تعريف الحقل لمدير قاعدة البيانات إلى أنه، إذا لم تتم الإشارة إلى أي شيء آخر، عند إنشاء سجل جديد، يجب تخزين قيمة السجل الأخير بالإضافة إلى الزيادة المقابلة تلقائيًا (والتي تكون عادة 1). وعادةً ما يتم تضمينها في الحقول التي تستخدم كفهارس رقمية للسجلات.

الرمز NOT NULL يشير إلى أن الحقل الموجود في السجل لا يمكن أن يكون فارغًا، بل يجب أن يخزن بعض القيمة.

عند استخدام DEFAULT عند إنشاء حقل في الجدول، تتم الإشارة إليه MySQL قيمة افتراضية للحقل بشرط أنه عند إضافة سجل جديد أو تعديله، لا يتم الإشارة إلى قيمة أخرى صراحة. القيمة الافتراضية المستخدمة بشكل متكرر، في هذه الحالة لمراقبة قيم إنترنت الأشياء، هي CURRENT_TIMESTAMP والذي يسمح لك بتسجيل الوقت الحالي تلقائيًا في الحقل عند إنشاء سجل جديد، بحيث يتم تحديد البيانات تلقائيًا في الوقت المناسب.

لتحسين أداء قاعدة البيانات، من المناسب أن تدرج في نهاية تعريف حقول الجدول الحقل الذي يستخدم كفهرس مع العبارة PRIMARY KEY (ID) المعرف هو الحقل الذي تم اختياره كفهرس.

في نهاية تعريف الجدول، يمكنك الإشارة إلى محرك قاعدة البيانات الذي تتم إدارته من خلاله كقيمة المعلمة ENGINE بالتنسيق ENGINE=InnoDB; siendo InnoDB المحرك المختار في هذه الحالة.

إنشاء قواعد البيانات والجداول وتكوين الحقول في جلسة SQL

يجمع الكود الموجود في المثال التالي الأوامر والخطوات التي يجب اتخاذها لإنشاء قاعدة بيانات تحتوي على الحد الأدنى من الجدول.

إنشاء نسخ احتياطية لقواعد البيانات

بمجرد تكوين الخادم وإنشاء قاعدة البيانات وجداولها، سيكون كل شيء جاهزًا لتخزين المعلومات التي حصلت عليها عقد إنترنت الأشياء. على الرغم من أن تركيز هذه السلسلة من المقالات لا يتضمن الصيانة، إلا أن هناك مشكلة إدارية هامة واحدة من المهم معالجتها: النسخ الاحتياطية. من معظم المديرين، بما في ذلك بريس y الخلية منضدة، يمكن إنشاء نسخ احتياطية واستعادتها ولكن من الشائع تضمينها في برنامج نصي يقوم بتشغيلها تلقائيًا (ربما مع التكوين والعديد من المستندات الأخرى) لذلك يكون استخدام الأداة أكثر ملاءمة MySQLDump، وهو عميل يكون عادةً جزءًا من التثبيت التقليدي لـ MySQL، أو بعض البدائل مثل تفريغ بيانات MySQL ماذا يشمل الطلب؟ mydumper لعمل نسخة و myloader لاستعادته

MySQLDump

تنسيق الطلب mysqldump الأمر بسيط للغاية، كل ما عليك فعله هو الإشارة إلى اسم المستخدم user، كلمة المرور password وقاعدة البيانات التي تريد نسخها أو --all-databases لعمل نسخة احتياطية لجميع قواعد البيانات كما في المثال التالي:

mysqldump --opt --user=pelaez --password=1234 --all-databases > copia.sql

المثال السابق ينشئ المستند copia.sql الذي يحتوي على الأوامر SQL (أي النص) اللازمة لإعادة بناء جميع قواعد البيانات. عند حفظها بتنسيق نصي، تشغل النسخة أكثر من اللازم، ولهذا السبب يتم ضغطها أيضًا عادةً لتوفير المساحة على الجهاز الذي تم تخزينها عليه.

يمكن استعادة النسخة الاحتياطية التي تم إنشاؤها باستخدام الأمر المثال في حالة فقدان المعلومات بسبب خطأ في الأمر أدناه الذي ينفذ العمليات SQL من الوثيقة copia.sql

mysql --user=pelaez --password=1234 < copia.sql

تفريغ بيانات MySQL

على الرغم من أن العمليات السابقة ستكون كافية، إلا أنها شائعة جدًا في الاستخدام تفريغ بيانات MySQL، وهو بالفعل معيار تقريبًا لأدائه على الرغم من أنه ليس جزءًا من الأدوات الأساسية المضمنة معه MySQL

وفيما يلي خيارات mydumper الأكثر استخدامًا أنه، منطقيًا، يجب كتابته كجزء من نفس الأمر، مفصولاً بمسافات، على الرغم من أنه تم فصلها في هذا النص إلى أسطر لتسهيل القراءة:

--host polaridad.es "polaridad.es" هو اسم خادم قاعدة البيانات
--port 3306 "3306" هو رقم المنفذ الذي يستمع إليه الخادم (افتراضيًا هو 3306)
--user pelaez "pelaez" هو اسم المستخدم الذي يتم الوصول إلى قاعدة البيانات من خلاله
--password 1234 "1234" هي كلمة المرور للمستخدم الذي يتم الوصول إلى قاعدة البيانات من خلاله
--database temperaturas "درجات الحرارة" هو اسم قاعدة البيانات التي يتم نسخها احتياطيًا
--no-locks لا تقفل قاعدة البيانات أثناء النسخ (يتم قفلها افتراضيًا)
--build-empty-files قم أيضًا بنسخ الجداول الفارغة
--compress-input ضغط المدخلات
--compress ضغط الإخراج (النسخة الاحتياطية الناتجة)

لاستعادة النسخة الاحتياطية التي تم الحصول عليها مع mydumper يتم استخدامه myloader والذي يستخدم بشكل أساسي مع الخيارات التالية، والتي يجب تضمينها بنفس الترتيب مفصولة بمسافات:

--host polaridad.es "polaridad.es" هو اسم خادم قاعدة البيانات
--port 3306 "3306" هو رقم المنفذ الذي يستمع إليه الخادم (افتراضيًا هو 3306)
--user pelaez "pelaez" هو اسم المستخدم الذي يتم الوصول إلى قاعدة البيانات من خلاله
--password 1234 "1234" هي كلمة المرور للمستخدم الذي يتم الوصول إلى قاعدة البيانات من خلاله
--directory=copia_iot «iot_copy» هو المجلد الذي توجد به النسخة التي تم إنشاؤها mydumper
--overwrite-tables استبدال الجداول حتى لو كانت موجودة بالفعل
--verbose 3 "3" هي درجة معلومات العملية (أعلى، رسائل أكثر)
-C استخدام الضغط على دفق البيانات

توضح المقالة التالية (والأخيرة) في هذه السلسلة كيفية استخدام لغة البرمجة PHP لتخزين المعلومات التي تحصل عليها الأجهزة المتصلة بإنترنت الأشياء في قواعد البيانات والتي تم الحديث عنها في هذا النص.

أكتب تعليق

ربما تكون قد فاتتك