Pregătiți baza de date MySQL sau MariaDB

Pregătiți baza de date MySQL sau MariaDB

Pregătiți baza de date MySQL sau MariaDB

Server web IoTServer web HTTP POST IoTBaza de date MySQL. Server web IoTPHP Language IoT Web Server

Configurați serverul bazei de date

Odată ce setul de servicii este instalat LAMP, WAMP, MAMP o XAMPP După cum se explică în primul articol al seriei sau pur și simplu după instalarea pe mașina care va acționa ca server a sumei aplicațiilor care implementează serviciile corespunzătoare, este necesară ajustarea unor aspecte ale configurației serverului bazei de date. MySQL precum și crearea bazelor de date și a tabelelor care vor fi utilizate pe serverul web pentru stocarea datelor de pe dispozitivele Internet of Things.

Dacă se folosește un server public, furnizorul va fi asigurat cu siguranță un tip de panou pentru a media între utilizator și configurația „reala” a bazei de date pentru a întări securitatea în funcționare. Dacă da, va trebui să consultați instrucțiunile oferite de acest furnizor. În cazul unui server real sau virtual găzduit în facilitățile unui terț, poate apărea o circumstanță comparabilă atunci când furnizorul îl gestionează; Dacă a fost contractat un server neadministrat (de către furnizor, gestionat de utilizator), se vor aplica următoarele informații.

Întrucât important este să cunoaștem instrucțiunile care trebuie date managerului bazei de date și se înțelege că acesta este folosit ca mijloc de susținere a dispozitivelor pentru internetul obiectelor, care ar face obiectul proiectului, poate fi suficient pentru a folosi consola, deoarece munca pe serverul bazei de date în sine va fi ocazională. Dacă volumul de lucru de management începe să crească, poate merita, deoarece este mai convenabil, să utilizați un manager pe serverul însuși, cum ar fi popularul phpMyAdmin (dintr-un browser web) sau local, desi desigur accesand serverul bazei de date, cu un administrator precum bancul de lucru mysql din care să performeze într-un avansat GUI operațiunile care urmează să fie explicate și multe altele care sunt în afara acestui articol și care merită o serie întreagă.

Panoul de administrare MySQL Workbench

Pe lângă operaţiile mai mult sau mai puţin automate cu care se pot face bancul de lucru mysql pe server, baze de date sau tabele este de asemenea posibilă efectuarea sarcinilor „manual” prin scrierea și executarea de scripturi complete sau comenzi independente în SQL. La fel ca și cu instrumentul bancul de lucru mysql, SQL necesită un capitol separat și care va fi esențial să cunoaștem în profunzime când partea de lucru web IoT care se desfășoară implică o atenție mai serioasă la backend decât este explicat aici.

Editorul de interogări SQL MySQL Workbench

În orice caz, și bineînțeles pentru a rezolva configurația necesară a bazei de date IoT care este în curs de procesare, consola poate fi folosită.

Configurați root, principalul administrator MySQL

Dacă serverul de baze de date se află pe propria mașină, primul lucru de făcut este configurarea permisiunilor de administrator al serviciului pentru a putea crea, folosind acele privilegii, alți utilizatori (care la rândul lor le pot avea) și, dacă este cazul, bazele de date și tabelele. în care să stocheze informațiile de care are nevoie sistemul Internet of Things.

Este important să vă ocupați de procesul de instalare a setului de servicii sau a serverului MySQL, în funcție de procesul urmat, întrucât, în multe cazuri, instalatorul însuși va fi responsabil de realizarea acestui pas și alții și nu va fi necesar să le repetați decât atunci când doriți să modificați configurația.

Pentru a efectua aceste sarcini, de obicei lucrați cu consola. MySQL ca administrator. Pentru a accesa acest mod, utilizați comanda mysql -u root -p o sudo mysql -u root dacă este utilizat pentru prima dată și în timpul instalării utilizatorul nu a fost configurat root

Configurarea utilizatorului root MySQL din consolă

În Ordine mysql -u root -p indicat cu opțiunea -u numele de utilizator (root) și cu opțiunea -p (parola) ca cheia trebuie solicitata la accesarea consola MySQL. Pentru a reveni la consola de sistem, puteți folosi comanda quit a iesi afara

După cum se vede în captura de ecran de mai sus, înainte de a părăsi consola MySQL, pentru a seta privilegiile utilizatorului root a fost folosită comanda:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
in care:

  • toate privilegiile sunt acordate GRANT ALL PRIVILEGES
  • în toate tabelele din toate bazele de date ON *.*
  • utilizatorului root accesarea de pe mașina care rulează serverul MySQL TO 'root'@'localhost'
  • folosind 1234 ca parolă IDENTIFIED BY '1234'
  • cu permisiunea de a autoriza alți utilizatori WITH GRANT OPTION

Pentru a gestiona baza de date de la distanță, privilegiile trebuie acordate utilizatorului corespunzător din alte locații. În exemplul anterior, a fost permis root accesat de pe mașina pe care rulează serverul de baze de date (localhost) cu 'root'@'localhost', dacă este folosit 'root'@'%' Accesul va fi permis de pe orice aparat.

Dacă aveți privilegii de administrator pe sistem, puteți restabili parola de utilizator root de MySQL. Pentru a face acest lucru, este necesar să opriți serviciul (mysql o mysqld, în funcție de distribuție), porniți-l fără cheie, setați noua cheie root și reporniți-l. Accesând fără parolă, este posibil să acordați privilegiile descrise mai sus.

  • opri serviciul sudo /etc/init.d/mysql stop
  • lansa MySQL fara cheie si debloca consola sudo mysqld_safe --skip-grant-tables &
  • acces ca «root» mysql -u root
  • schimba parola:
    • acceseaza baza de date «mysql»: USE mysql;
    • atribuie lui «root» tasta «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • aplica noile privilegii: FLUSH PRIVILEGES;
    • ieși din consola mysql și reveniți la sistem: quit
  • reporniți serviciul sudo /etc/init.d/mysql restart

Configurați accesul la baza de date de la distanță

Din motive de securitate, configurația inițială a managerului bazei de date MySQL nu permite accesul la distanta, pentru a-l schimba este necesar sa editati documentul de configurare, in mod normal my.cnf, care se găsește de obicei pe traseu /etc/mysql.

Dacă este utilizat MariaDB, care este acum versiunea „mai liberă”, a MySQL, cu siguranță my.cnf va fi un link către /etc/alternatives/my.cnf care, la rândul său, va încărca configurația, folosind !includedir, din documentele de traseu /etc/mysql/mariadb.conf.d, probabil din document 50-server.cnf

Resursa pe care o folosește serverul de baze de date pentru a nu răspunde la cererile de la distanță constă în „ascultarea” doar a cererilor făcute dintr-o anumită locație. adresă IP care se exprimă ca valoare a parametrului bind-address (care înlocuiește clasicul skip-networking) Când adresa este 127.0.0.1 (localhost) sunt tratate numai cererile de la aparatul local. Dacă este comentat cu # sau dacă valoarea este 0.0.0.0, servim orice adresa. Pentru a permite accesul extern, cel mai sigur lucru este să indicați adresă IP (care poate fi public sau privat) a computerului de pe care se accesează, de obicei ceva de genul bind-address = 192.168.1.74. În cazul dumneavoastră, acest echipament poate acționa ca un tunel (redirecționare cu SSH) sau ca pasarelă (cu tabele IP de bază) pentru a evita expunerea serverului în afara unei zone controlate a rețelei.

Configurarea bazei de date MySQL prin editarea fișierului my.cnf (în etc mysql)

În captura de ecran de mai sus puteți vedea că a fost editat my.cnf cu configuratia MySQL folosind comanda sudo nano /etc/mysql/my.cnf. În cazul lucrului cu MariaDB Cu configurația obișnuită, ordinea ar fi ceva de genul sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. După cum am menționat mai sus, odată ce există acces cu privilegii administrative, a GUI ca bancul de lucru mysql pentru gestionarea regulată a bazei de date.

Creați bazele de date

Odată ce serverul de baze de date este configurat, se pot crea bazele de date și tabelele în care să stocheze datele IoT. Pentru a face acest lucru, puteți utiliza comenzi SQL din consolă sau din GUI a unui manager.

Ordinea CREATE DATABASE temperaturas; creează baza de date „temperaturi”.Pentru a evita erorile se poate folosi formularul CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; care ar crea baza de date „temperature_database” doar dacă nu există în prezent.

Creați tabelele

Deoarece în diferite baze de date pot exista tabele cu același nume, vă puteți referi la unul dintre ele precedându-i numele cu cel al bazei de date și despărțindu-le pe ambele printr-o punct, ceva de genul base_datos.tabla Această notație poate fi extinsă și la numele câmpurilor base.tabla.campo

Dacă numele bazei de date este omis atunci când se operează pe un tabel (în acest caz, la crearea acestuia) se consideră că se face referire la ultimul selectat. Pentru a selecta în mod expres unul anume, puteți folosi comanda USE și indicați numele dvs USE base_datos_temperaturas;

La crearea tabelelor în baze de date, în aceeași operațiune, se adaugă de obicei informațiile câmpurilor care le formează (deși este posibilă și modificarea lor ulterior).Așa cum se face cu baza de date, tabelul poate fi creat doar dacă se face nu exista adaugarea clauzei IF NOT EXISTS sau, dimpotrivă, asigurați-vă că ștergeți tabelul înainte de a-l crea numai dacă acesta există folosind DROP TABLE IF EXISTS valor_temperaturas;

Pentru a permite nume de tabele sau baze de date care ar putea intra în conflict cu comenzile sau procedurile, semnul de accent grav, uneori numit virgulă, poate fi folosit pentru a înconjura numele și pentru a evita conflictele sau erorile în comenzi. SQL.

Definiți câmpurile

Câmpurile care sunt adăugate la crearea tabelului sunt indicate prin includerea lor în paranteze și indicând tipul de date pe care le stochează. Tipurile de date utilizate în mod obișnuit într-o bază de date pentru a stoca informații de la dispozitivele conectate la Internetul lucrurilor sunt numere întregi (INT o BIGINT) zecimale (DECIMAL, DOUBLE o FLOAT) de timp (DATE, TIME, DATETIME o TIMESTAMP) și text (în principal VARCHAR deși mai sunt și altele asemenea TEXT dar nu sunt folosite pentru IoT) După tipul de date, și între paranteze, se adaugă lungimea datelor și, dacă este cazul, formatul sau precizia.

Prin adăugarea AUTO_INCREMENT Definirea unui câmp indică managerului bazei de date că, dacă nu se indică nimic altceva, la crearea unei noi înregistrări trebuie să fie stocată automat valoarea ultimei plus incrementul corespunzător (care este în mod normal 1). De obicei, este inclusă în câmpuri care sunt utilizate ca indici numerici ai înregistrărilor.

Codul NOT NULL indică faptul că un câmp dintr-o înregistrare nu poate fi gol, trebuie să stocheze o anumită valoare.

Când utilizați DEFAULT La crearea unui câmp al unui tabel, acesta este indicat MySQL o valoare implicită pentru câmp cu condiția ca la adăugarea unei noi înregistrări sau modificarea acesteia, o altă valoare să nu fie indicată în mod expres. O valoare implicită folosită frecvent, în acest caz pentru a monitoriza valorile IoT, este CURRENT_TIMESTAMP care vă permite să înregistrați automat ora curentă într-un câmp atunci când creați o înregistrare nouă, astfel încât datele sunt identificate automat în timp.

Pentru a optimiza performanța bazei de date, este convenabil să includeți la sfârșitul definiției câmpurilor de tabel unul care este folosit ca index cu clauza PRIMARY KEY (ID) ID fiind câmpul ales ca index.

La finalul definirii unui tabel se poate indica motorul bazei de date cu care este gestionat ca valoare a parametrului ENGINE cu formatul ENGINE=InnoDB; siendo InnoDB motorul ales în acest caz.

Creați baze de date, tabele și configurați câmpuri într-o sesiune SQL

Codul din exemplul următor reunește comenzile, pașii care ar trebui parcurși, pentru a crea o bază de date cu un tabel minim.

Creați copii de rezervă ale bazelor de date

Odată ce serverul este configurat și baza de date și tabelele acesteia au fost create, totul ar fi gata pentru a stoca informațiile obținute de nodurile IoT. Deși accentul acestei serii de articole nu include întreținerea, există o problemă administrativă critică care este important de abordat: backup-urile. De la majoritatea managerilor, inclusiv phpMyAdmin y bancul de lucru mysql, copii de rezervă pot fi făcute și restaurate, dar este obișnuit să le includeți într-un script care le automatizează (probabil împreună cu configurația și multe alte documente) deci este mai convenabil să utilizați instrumentul MySQLDump, un client care face de obicei parte dintr-o instalație convențională a MySQL, sau o alternativă ca Dumper de date MySQL Ce include comanda? mydumper să facă copia și myloader pentru a o restaura

MySQLDump

Formatul comenzii mysqldump Este foarte simplu, trebuie doar să indicați numele de utilizator user, Parola password și baza de date pe care doriți să o copiați sau --all-databases pentru a face backup tuturor bazelor de date, ca în exemplul următor:

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

Exemplul anterior generează documentul copia.sql care contine ordinele SQL (adică text) necesare pentru a reconstrui toate bazele de date. Când este salvată în format text, copia ocupă mult mai mult decât este necesar, motiv pentru care este de obicei comprimată pentru a economisi spațiu pe dispozitivul pe care este stocată.

Backup-ul generat cu exemplul de comandă ar putea fi restabilit dacă informația s-a pierdut din cauza unei erori cu comanda de mai jos care execută operațiunile SQL a documentului copia.sql

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

Dumper de date MySQL

Deși operațiunile anterioare ar fi suficiente, este foarte comun de utilizat Dumper de date MySQL, deja aproape un standard pentru performanța sa, deși nu face parte din instrumentele de bază incluse MySQL

Următoarele sunt opțiunile de mydumper cele mai folosite că, logic, ar trebui scrise ca parte a aceleiași comenzi, separate prin spații, deși în acest text au fost separate în rânduri pentru a facilita citirea:

--host polaridad.es „polaridad.es” este numele serverului de baze de date
--port 3306 „3306” este numărul portului pe care ascultă serverul (în mod implicit este 3306)
--user pelaez „pelaez” este numele utilizatorului cu care se accesează baza de date
--password 1234 „1234” este parola utilizatorului cu care este accesată baza de date
--database temperaturas „temperaturi” este numele bazei de date pentru care se face backup
--no-locks nu blocați baza de date în timpul copierii (în mod implicit se blochează)
--build-empty-files copiați și tabele goale
--compress-input comprimați intrarea
--compress comprimați rezultatul (backup-ul rezultat)

Pentru a restabili backup-ul obținut cu mydumper este folosit myloader care este utilizat în principal cu următoarele opțiuni, care trebuie incluse în aceeași ordine, separate prin spații:

--host polaridad.es „polaridad.es” este numele serverului de baze de date
--port 3306 „3306” este numărul portului pe care ascultă serverul (în mod implicit este 3306)
--user pelaez „pelaez” este numele utilizatorului cu care se accesează baza de date
--password 1234 „1234” este parola utilizatorului cu care este accesată baza de date
--directory=copia_iot «iot_copy» este folderul în care se află copia generată cu mydumper
--overwrite-tables suprascrie tabele chiar dacă acestea există deja
--verbose 3 „3” este gradul de informare al procesului (mai mare, mai multe mesaje)
-C utilizați compresia pe fluxul de date

Următorul (și ultimul) articol din această serie explică cum să folosești limbajul de programare PHP pentru a stoca informațiile obținute de dispozitivele conectate la Internet of Things în baze de date despre care s-a vorbit în acest text.

Posteaza un comentariu

S-ar putea să fi ratat