Подгответе базата данни MySQL или MariaDB

Подгответе базата данни MySQL или MariaDB

Подгответе базата данни MySQL или MariaDB

IoT уеб сървърHTTP POST IoT уеб сървърMySQL база данни. IoT уеб сървърPHP език IoT уеб сървър

Конфигурирайте сървъра на базата данни

След като наборът от услуги е инсталиран LAMP, WAMP, MAMP o XAMPP Както е обяснено в първата статия от поредицата или просто след инсталиране на машината, която ще действа като сървър, сумата от приложения, които изпълняват съответните услуги, е необходимо да се коригират някои аспекти на конфигурацията на сървъра на базата данни MySQL както и създаване на бази данни и таблици, които ще се използват на уеб сървъра за съхраняване на данни от устройства за Интернет на нещата.

Ако се използва публичен сървър, доставчикът със сигурност ще е предоставил някакъв тип панел за посредничество между потребителя и „истинската“ конфигурация на базата данни, за да подсили сигурността на операцията. Ако е така, ще трябва да се обърнете към инструкциите, които този доставчик предлага. В случай на реален или виртуален сървър, хостван в съоръжения на трета страна, може да възникне подобно обстоятелство, когато доставчикът го управлява; Ако е сключен договор за неуправляван сървър (от доставчика, управляван от потребителя), ще се прилага следната информация.

Тъй като важното е да се знаят инструкциите, които трябва да бъдат дадени на мениджъра на базата данни и се разбира, че той се използва като средство за поддръжка на устройства за Интернет на нещата, което би било обект на проекта, може да бъде достатъчно, за да използвате конзолата, тъй като работата на самия сървър на базата данни ще бъде случайна. Ако натоварването на управлението започне да се увеличава, може да си струва, тъй като е по-удобно, да използвате мениджър на самия сървър, като популярния PhpMyAdmin (от уеб браузър) или локално, въпреки че разбира се има достъп до сървъра на базата данни, с администратор като напр mysql работна маса от които да изпълнява в напреднал GUI операциите, които ще бъдат обяснени и много други, които са извън тази статия и които заслужават цяла серия.

Административен панел на MySQL Workbench

В допълнение към повече или по-малко автоматичните операции, които могат да се извършват с mysql работна маса на сървъра, бази данни или таблици също е възможно да се изпълняват задачи "ръчно" чрез писане и изпълнение на пълни скриптове или независими команди в SQL. Същото като с инструмента mysql работна маса, SQL изисква отделна глава и която ще бъде от съществено значение да се знае в дълбочина, когато частта от уеб работата по IoT, която се извършва, включва по-сериозно внимание към бекенд отколкото е обяснено тук.

MySQL Workbench SQL редактор на заявки

Във всеки случай и, разбира се, за разрешаване на необходимата конфигурация на IoT базата данни, която се обработва, може да се използва конзолата.

Конфигурирайте root, главният MySQL администратор

Ако сървърът на базата данни е на собствена машина, първото нещо, което трябва да направите, е да конфигурирате разрешенията на администратора на услугата, за да можете да създавате, използвайки тези привилегии, други потребители (които от своя страна може да ги имат) и, ако е приложимо, базите данни и таблиците в който да се съхранява информацията, от която се нуждае системата Internet of Things.

Важно е да се обърне внимание на процеса на инсталиране на набора от услуги или сървъра MySQL, в зависимост от последвания процес, тъй като в много случаи самият инсталатор ще отговаря за извършването на тази стъпка и други и няма да е необходимо да ги повтаряте, освен когато искате да промените конфигурацията.

За да изпълните тези задачи, обикновено работите с конзолата. MySQL като администратор. За достъп до този режим използвайте командата mysql -u root -p o sudo mysql -u root ако се използва за първи път и по време на инсталацията потребителят не е конфигуриран root

Конфигуриране на MySQL root потребител от конзолата

В реда 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) или като пътека (с основни ip таблици), за да избегнете излагането на сървъра извън контролирана зона на мрежата.

Конфигуриране на MySQL база данни чрез редактиране на my.cnf файл (в и т.н. mysql)

На екранната снимка по-горе можете да видите, че е редактиран my.cnf с конфигурацията MySQL използвайки поръчката sudo nano /etc/mysql/my.cnf. В случай на работа с MariaDB При обичайната конфигурация редът би бил нещо подобно sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. Както бе споменато по-горе, след като има достъп с администраторски привилегии, a GUI като mysql работна маса за редовно управление на база данни.

Създайте базите данни

След като сървърът на базата данни е конфигуриран, могат да бъдат създадени базите данни и таблиците, в които да се съхраняват IoT данните. За да направите това, можете да използвате команди 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 но те не се използват за IoT) След типа на данните и в скоби се добавят дължината на данните и, ако е приложимо, форматът или точността.

Добавяйки AUTO_INCREMENT Дефиницията на поле показва на мениджъра на базата данни, че ако не е посочено нищо друго, когато се създава нов запис, стойността на последния плюс съответното нарастване трябва да се съхранява автоматично (което обикновено е 1). Обикновено се включва в полета, които се използват като цифрови индекси на записите.

Кодът NOT NULL показва, че поле в запис не може да бъде празно, то трябва да съхранява някаква стойност.

При използване DEFAULT При създаване на поле от таблица се посочва MySQL стойност по подразбиране за полето, при условие че при добавяне на нов запис или промяна на него друга стойност не е изрично посочена. Често използвана стойност по подразбиране, в този случай за наблюдение на IoT стойности, е CURRENT_TIMESTAMP което ви позволява автоматично да записвате текущия час в поле, когато създавате нов запис, така че данните се идентифицират автоматично във времето.

За оптимизиране на производителността на базата данни е удобно в края на дефиницията на полетата на таблицата да се включи едно, което се използва като индекс с клаузата PRIMARY KEY (ID) ID е полето, избрано като индекс.

В края на дефиницията на таблица можете да посочите машината на базата данни, с която се управлява, като стойност на параметъра ENGINE с формата ENGINE=InnoDB; същество InnoDB избраният в този случай двигател.

Създавайте бази данни, таблици и конфигурирайте полета в SQL сесия

Кодът в следващия пример обединява поръчките, стъпките, които трябва да бъдат предприети, за да се създаде база данни с минимална таблица.

Създаване на резервни копия на бази данни

След като сървърът е конфигуриран и базата данни и нейните таблици са създадени, всичко ще бъде готово за съхраняване на информацията, получена от IoT възлите. Въпреки че фокусът на тази поредица от статии не включва поддръжката, има един критичен административен проблем, който е важно да се реши: резервни копия. От повечето мениджъри, вкл PhpMyAdmin y mysql работна маса, могат да се правят и възстановяват резервни копия, но е обичайно да се включват в скрипт, който ги автоматизира (вероятно заедно с конфигурацията и много други документи), така че е по-удобно да се използва инструментът MySQLDump, клиент, който обикновено е част от конвенционална инсталация на MySQL, или някаква алтернатива като MySQL Data Dumper Какво включва поръчката? 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 Data Dumper

Въпреки че предишните операции биха били достатъчни, той е много обичаен за използване MySQL Data Dumper, вече почти стандарт за неговата производителност, въпреки че не е част от базовите инструменти, включени в 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, за да съхранявате информацията, получена от устройства, свързани с Интернет на нещата, в бази данни за които стана дума в този текст.

Публикувай коментар

Може да сте пропуснали