Pripravite bazo podatkov MySQL ali MariaDB

Pripravite bazo podatkov MySQL ali MariaDB

Pripravite bazo podatkov MySQL ali MariaDB

IoT spletni strežnikHTTP POST IoT spletni strežnikBaza podatkov MySQL. IoT spletni strežnikJezik PHP IoT spletni strežnik

Konfigurirajte strežnik baze podatkov

Ko je nabor storitev nameščen LAMP, WAMP, MAMP o XAMPP Kot je pojasnjeno v prvem članku serije ali preprosto po namestitvi v računalnik, ki bo deloval kot strežnik, vsote aplikacij, ki izvajajo ustrezne storitve, je treba prilagoditi nekatere vidike konfiguracije strežnika baz podatkov MySQL kot tudi ustvarjanje baz podatkov in tabel, ki bodo uporabljene na spletnem strežniku za shranjevanje podatkov iz naprav interneta stvari.

Če se uporablja javni strežnik, bo ponudnik zagotovo zagotovil neko vrsto plošče za posredovanje med uporabnikom in "pravo" konfiguracijo baze podatkov, da bi okrepil varnost delovanja. Če je tako, se boste morali obrniti na navodila, ki jih ponuja ta ponudnik. V primeru resničnega ali virtualnega strežnika, ki gostuje v prostorih tretje osebe, lahko nastane primerljiva okoliščina, ko ga upravlja ponudnik; Če je bila sklenjena pogodba za neupravljani strežnik (s strani ponudnika, ki ga upravlja uporabnik), veljajo naslednje informacije.

Ker je pomembno poznati navodila, ki jih je treba dati upravitelju baze podatkov, in se razume, da se uporablja kot sredstvo za podporo napravam za internet stvari, ki bi bil predmet projekta, je lahko dovolj za uporabo konzole, saj bo delo na samem strežniku baze podatkov občasno. Če se delovna obremenitev upravljanja začne povečevati, se bo morda splačalo, ker je bolj priročno, uporabiti upravitelja na samem strežniku, kot je priljubljeni phpMyAdmin (iz spletnega brskalnika) ali lokalno, čeprav seveda z dostopom do strežnika baz podatkov, z administratorjem kot npr Delovna miza MySQL iz katerega nastopati v naprednem GUI operacije, ki bodo razložene, in mnoge druge, ki so izven tega članka in si zaslužijo celo vrsto.

Skrbniška plošča MySQL Workbench

Poleg bolj ali manj samodejnih operacij, s katerimi lahko Delovna miza MySQL na strežniku, bazah podatkov ali tabelah je možno izvajati naloge tudi "ročno" s pisanjem in izvajanjem celotnih skript ali neodvisnih ukazov v SQL. Enako kot pri orodju Delovna miza MySQL, SQL zahteva ločeno poglavje in ki bo bistveno za poglobljeno poznavanje, ko del spletnega dela IoT, ki se izvaja, vključuje večjo pozornost backend kot je razloženo tukaj.

Urejevalnik poizvedb SQL MySQL Workbench

V vsakem primeru in seveda za razrešitev potrebne konfiguracije baze podatkov IoT, ki se obdeluje, se lahko uporabi konzola.

Konfigurirajte root, glavnega skrbnika MySQL

Če je strežnik baz podatkov na svojem računalniku, morate najprej konfigurirati dovoljenja skrbnika storitve, da lahko z uporabo teh privilegijev ustvarite druge uporabnike (ki jih lahko imajo) in, če je primerno, baze podatkov in tabele v kateri bodo shranjene informacije, ki jih potrebuje sistem interneta stvari.

Pomembno je, da se posvetite procesu namestitve nabora storitev ali strežnika MySQL, odvisno od postopka, ki sledi, saj bo v mnogih primerih namestitveni program sam odgovoren za izvedbo tega in drugih korakov in jih ne bo treba ponavljati, razen če želite spremeniti konfiguracijo.

Za izvajanje teh nalog običajno delate s konzolo. MySQL kot skrbnik. Za dostop do tega načina uporabite ukaz mysql -u root -p o sudo mysql -u root če se uporablja prvič in med namestitvijo uporabnik ni bil konfiguriran root

Konfiguriranje korenskega uporabnika MySQL s konzole

V naročilo mysql -u root -p označeno z možnostjo -u uporabniško ime (root) in z možnostjo -p (geslo), da je treba ključ zahtevati pri dostopu do konzole MySQL. Za vrnitev na sistemsko konzolo lahko uporabite ukaz quit iti ven

Kot je razvidno iz zgornjega posnetka zaslona, ​​preden zapustite konzolo MySQL, da nastavite privilegije uporabnika root uporabljen je bil ukaz:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
v kateri:

  • vsi privilegiji so podeljeni GRANT ALL PRIVILEGES
  • v vseh tabelah v vseh zbirkah podatkov ON *.*
  • uporabniku root dostop iz računalnika, ki poganja strežnik MySQL TO 'root'@'localhost'
  • z uporabo 1234 kot gesla IDENTIFIED BY '1234'
  • z dovoljenjem za avtorizacijo drugih uporabnikov WITH GRANT OPTION

Za upravljanje baze podatkov na daljavo je treba dodeliti privilegije ustreznemu uporabniku z drugih lokacij. V prejšnjem primeru je bilo dovoljeno root dostopate z računalnika, na katerem se izvaja strežnik baze podatkov (localhost) s 'root'@'localhost', če se uporablja 'root'@'%' Dostop bo dovoljen s katerega koli stroja.

Če imate v sistemu skrbniške pravice, lahko znova vzpostavite uporabniško geslo root de MySQL. Za to je potrebno ustaviti storitev (mysql o mysqld, odvisno od distribucije), ga zaženite brez ključa, nastavite nov ključ root in ga znova zaženite. Z dostopom brez gesla je mogoče podeliti tudi zgoraj opisane privilegije.

  • ustavite storitev sudo /etc/init.d/mysql stop
  • metati MySQL brez ključa in odklenite konzolo sudo mysqld_safe --skip-grant-tables &
  • dostop kot «root» mysql -u root
  • spremenite geslo:
    • dostop do baze podatkov «mysql»: USE mysql;
    • dodeliti «root» ključ «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • uporabite nove privilegije: FLUSH PRIVILEGES;
    • izhodna konzola mysql in vrnitev v sistem: quit
  • storitev ponovnega zagona sudo /etc/init.d/mysql restart

Konfigurirajte oddaljeni dostop do baze podatkov

Iz varnostnih razlogov začetna konfiguracija upravljalnika baz podatkov MySQL ne dovoljuje oddaljenega dostopa, če ga želite spremeniti, morate običajno urediti konfiguracijski dokument my.cnf, ki se običajno nahaja na poti /etc/mysql.

Če se uporablja MariaDB, ki je zdaj "brezplačnejša" različica MySQLzagotovo my.cnf bo povezava do /etc/alternatives/my.cnf ki bo nato naložil konfiguracijo z uporabo !includedir, iz dokumentov poti /etc/mysql/mariadb.conf.d, verjetno iz dokumenta 50-server.cnf

Vir, ki ga strežnik baze podatkov uporablja, da se ne posveti oddaljenim zahtevam, je sestavljen iz "poslušanja" samo zahtev, poslanih z določene lokacije. IP naslov ki je izražena kot vrednost parametra bind-address (ki nadomešča klasično skip-networking) Ko je naslov 127.0.0.1 (localhost) obravnavajo se samo zahteve lokalnega računalnika. Če komentirate z # ali če je vrednost 0.0.0.0, nudimo kateri koli naslov. Če želite omogočiti zunanji dostop, je najvarneje navesti IP naslov (ki je lahko javna ali zasebna) računalnika, iz katerega se dostopa, običajno nekaj podobnega bind-address = 192.168.1.74. V vašem primeru lahko ta oprema deluje kot predor (preusmerjanje z SSH) ali kot sprehajalna pot (z core ip tabele), da preprečite izpostavljanje strežnika zunaj nadzorovanega območja omrežja.

Konfiguracija baze podatkov MySQL z urejanjem datoteke my.cnf (v itd. mysql)

Na zgornjem posnetku zaslona lahko vidite, da je bil urejen my.cnf s konfiguracijo MySQL uporabo naročila sudo nano /etc/mysql/my.cnf. V primeru dela z MariaDB Z običajno konfiguracijo bi bil vrstni red nekaj takega sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. Kot je navedeno zgoraj, ko je dostop s skrbniškimi pravicami, a GUI kot Delovna miza MySQL za redno vodenje baze podatkov.

Ustvarite baze podatkov

Ko je strežnik baz podatkov konfiguriran, je mogoče ustvariti baze podatkov in tabele, v katerih bodo shranjeni podatki IoT. Če želite to narediti, lahko uporabite ukaze SQL iz konzole ali iz GUI menedžerja.

Ukaz CREATE DATABASE temperaturas; ustvari podatkovno bazo “temperature”.Da bi se izognili napakam, lahko uporabite obrazec CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; ki bi ustvaril bazo podatkov “temperature_database” le, če trenutno ne obstaja.

Ustvarite tabele

Ker so lahko v različnih bazah podatkov tabele z enakim imenom, se lahko sklicujete na eno od njih tako, da pred njenim imenom postavite ime baze podatkov in obe ločite s piko, nekako tako base_datos.tabla Ta zapis se lahko razširi tudi na imena polj base.tabla.campo

Če pri delu s tabelo (v tem primeru pri izdelavi) izpustimo ime baze podatkov, se šteje, da se sklicuje na zadnjo izbrano. Če želite izrecno izbrati določeno, lahko uporabite ukaz USE in navedite svoje ime USE base_datos_temperaturas;

Pri ustvarjanju tabel v bazah podatkov se v isti operaciji običajno dodajo podatki polj, ki jih sestavljajo (čeprav jih je možno tudi kasneje spremeniti).Tako kot pri bazi podatkov je tabelo mogoče ustvariti le, če ne obstaja dodajanje klavzule IF NOT EXISTS ali nasprotno, izbrišite tabelo, preden jo ustvarite le, če obstaja z uporabo DROP TABLE IF EXISTS valor_temperaturas;

Če želite dovoliti imena tabel ali zbirk podatkov, ki bi lahko bila v nasprotju z ukazi ali postopki, lahko za obkrožanje imena uporabite naglasno oznako, ki se včasih imenuje narobe in se tako izognete sporom ali napakam v ukazih. SQL.

Določite polja

Polja, ki so dodana pri ustvarjanju tabele, so označena tako, da so v oklepajih in navedejo vrsto podatkov, ki jih hranijo. Vrste podatkov, ki se običajno uporabljajo v bazi podatkov za shranjevanje informacij iz naprav, povezanih z internetom stvari, so cela števila (INT o BIGINT) decimalke (DECIMAL, DOUBLE o FLOAT) časa (DATE, TIME, DATETIME o TIMESTAMP) in besedilo (predvsem VARCHAR čeprav obstajajo še drugi podobni TEXT vendar se ne uporabljajo za IoT) Za tipom podatkov in v oklepaju sta dodana dolžina podatkov in, če je primerno, oblika ali natančnost.

Z dodajanjem AUTO_INCREMENT Definicija polja nakazuje upravitelju baze podatkov, da mora biti, če ni navedeno nič drugega, pri ustvarjanju novega zapisa samodejno shranjena vrednost zadnjega in ustrezen prirastek (ki je običajno 1). Običajno je vključen v polja, ki se uporabljajo kot numerični indeksi zapisov.

Koda NOT NULL označuje, da polje v zapisu ne more biti prazno, shraniti mora neko vrednost.

Pri uporabi DEFAULT Pri ustvarjanju polja tabele je navedeno MySQL privzeta vrednost za polje pod pogojem, da pri dodajanju novega zapisa ali njegovem spreminjanju druga vrednost ni izrecno navedena. Pogosto uporabljena privzeta vrednost, v tem primeru za spremljanje vrednosti IoT, je CURRENT_TIMESTAMP ki omogoča avtomatsko beleženje trenutnega časa v polje pri ustvarjanju novega zapisa, tako da so podatki samodejno časovno identificirani.

Za optimizacijo delovanja baze podatkov je primerno na koncu definicije polj tabele vključiti tisto, ki se uporablja kot indeks s klavzulo PRIMARY KEY (ID) ID je polje, izbrano kot indeks.

Na koncu definicije tabele lahko kot vrednost parametra navedete motor baze podatkov, s katerim se upravlja ENGINE z obliko ENGINE=InnoDB; biti InnoDB motor, izbran v tem primeru.

Ustvarite baze podatkov, tabele in konfigurirajte polja v seji SQL

Koda v naslednjem primeru združuje naročila, korake, ki bi jih bilo treba izvesti, da ustvarite bazo podatkov z minimalno tabelo.

Ustvarite varnostne kopije baz podatkov

Ko je strežnik konfiguriran in baza podatkov ter njene tabele ustvarjene, je vse pripravljeno za shranjevanje informacij, ki jih pridobijo vozlišča IoT. Čeprav v središču te serije člankov ni vzdrževanje, je treba obravnavati eno kritično administrativno težavo: varnostne kopije. Od večine menedžerjev, vključno z phpMyAdmin y Delovna miza MySQL, varnostne kopije je mogoče narediti in obnoviti, vendar je običajno, da jih vključite v skript, ki jih avtomatizira (verjetno skupaj s konfiguracijo in številnimi drugimi dokumenti), tako da je uporaba orodja bolj priročna MySQLDump, odjemalec, ki je običajno del običajne namestitve MySQL, ali kakšna druga možnost MySQL Data Dumper Kaj vključuje naročilo? mydumper narediti kopijo in myloader da ga obnovim

MySQLDump

Oblika naročila mysqldump Zelo preprosto je, le navesti morate uporabniško ime user, Geslo password in bazo, ki jo želite kopirati oz --all-databases za varnostno kopiranje vseh baz podatkov, kot v naslednjem primeru:

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

Prejšnji primer generira dokument copia.sql ki vsebuje naročila SQL (tj. besedilo), potrebno za ponovno izgradnjo vseh baz podatkov. Pri shranjevanju v besedilni obliki kopija zavzame veliko več, kot je potrebno, zato je običajno tudi stisnjena, da prihrani prostor na napravi, na kateri je shranjena.

Varnostno kopijo, ustvarjeno s primerom ukaza, je mogoče obnoviti, če so bile informacije izgubljene zaradi napake s spodnjim ukazom, ki izvaja operacije SQL dokumenta copia.sql

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

MySQL Data Dumper

Čeprav bi prejšnje operacije zadostovale, je uporaba zelo pogosta MySQL Data Dumper, ki je že skoraj standard za njegovo delovanje, čeprav ni del osnovnih orodij, ki so vključena MySQL

Sledijo možnosti za mydumper najpogosteje uporabljeni, ki bi moral biti logično zapisan kot del istega ukaza, ločen s presledki, čeprav so bili v tem besedilu za lažje branje ločeni v vrstice:

--host polaridad.es »polaridad.es« je ime strežnika baze podatkov
--port 3306 "3306" je številka vrat, na katerih strežnik posluša (privzeto je 3306)
--user pelaez "pelaez" je ime uporabnika, s katerim se dostopa do podatkovne baze
--password 1234 »1234« je geslo uporabnika, s katerim se dostopa do podatkovne baze
--database temperaturas »temperature« je ime baze podatkov, ki se varnostno kopira
--no-locks ne zakleni baze podatkov med kopiranjem (privzeto se zaklene)
--build-empty-files kopirajte tudi prazne tabele
--compress-input stisnite vnos
--compress stisnite izhod (nastala varnostna kopija)

Če želite obnoviti varnostno kopijo, pridobljeno z mydumper uporablja se myloader ki se primarno uporablja z naslednjimi možnostmi, ki morajo biti vključene v istem vrstnem redu, ločene s presledki:

--host polaridad.es »polaridad.es« je ime strežnika baze podatkov
--port 3306 "3306" je številka vrat, na katerih strežnik posluša (privzeto je 3306)
--user pelaez "pelaez" je ime uporabnika, s katerim se dostopa do podatkovne baze
--password 1234 »1234« je geslo uporabnika, s katerim se dostopa do podatkovne baze
--directory=copia_iot «iot_copy» je mapa, v kateri se nahaja kopija, ustvarjena z mydumper
--overwrite-tables prepisati tabele, tudi če že obstajajo
--verbose 3 "3" je stopnja informiranosti procesa (višja, več sporočil)
-C uporabite stiskanje podatkovnega toka

Naslednji (in zadnji) članek v tej seriji pojasnjuje kako uporabiti programski jezik PHP za shranjevanje informacij, ki jih pridobijo naprave, povezane z internetom stvari, v baze podatkov o katerih je bilo govora v tem besedilu.

po Komentar

Morda ste zamudili