Pripravite bazo podatkov MySQL ali MariaDB
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.
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.
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
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 MySQLTO '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
- dostop do baze podatkov «
-
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.
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
ustvari podatkovno bazo “temperature”.Da bi se izognili napakam, lahko uporabite obrazec temperaturas
;CREATE DATABASE IF NOT EXISTS
ki bi ustvaril bazo podatkov “temperature_database” le, če trenutno ne obstaja.base_datos_temperaturas
;
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 je polje, izbrano kot indeks.ID
)
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
CREATE DATABASE `base_datos_temperaturas`;
CREATE DATABASE IF NOT EXISTS `base_datos_temperaturas`;
USE `base_datos_temperaturas`;
DROP TABLE IF EXISTS `calefacciones`;
CREATE TABLE IF NOT EXISTS `calefacciones`
(
`identificador` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
`estancia` VARCHAR(32) NOT NULL DEFAULT ”,
`temperatura` FLOAT(4,2),
`fecha` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`identificador`)
)
ENGINE=InnoDB;
|
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