Paruoškite MySQL arba MariaDB duomenų bazę
- Sukonfigūruokite duomenų bazės serverį
- Sukonfigūruokite pagrindinį „MySQL“ administratorių
- Konfigūruokite nuotolinę prieigą prie duomenų bazės
- Sukurkite duomenų bazes
- Sukurkite lenteles
- Apibrėžkite laukus
- Kurkite duomenų bazes, lenteles ir konfigūruokite laukus SQL seanso metu
- Sukurkite atsargines duomenų bazių kopijas
Sukonfigūruokite duomenų bazės serverį
Įdiegus paslaugų rinkinį LEMPA, WAMP, MAMP o XAMPP Kaip paaiškinta pirmame serijos straipsnyje arba tiesiog įdiegus įrenginyje, kuris veiks kaip serveris programų, įgyvendinančių atitinkamas paslaugas, sumą, būtina pakoreguoti kai kuriuos duomenų bazės serverio konfigūracijos aspektus. MySQL taip pat sukurti duomenų bazes ir lenteles, kurios bus naudojamos žiniatinklio serveryje duomenims iš daiktų interneto įrenginių saugoti.
Jei naudojamas viešasis serveris, teikėjas tikrai pateiks tam tikro tipo skydelį, kuris tarpininkautų tarp vartotojo ir „tikrosios“ duomenų bazės konfigūracijos, kad sustiprintų operacijos saugumą. Jei taip, turėsite vadovautis šio teikėjo siūlomomis instrukcijomis. Realaus ar virtualaus serverio, patalpinto trečiosios šalies patalpose, atveju gali susidaryti panaši aplinkybė, kai paslaugų teikėjas jį valdo; Jei buvo sudaryta sutartis dėl nevaldomo serverio (tiekėjo, valdomo vartotojo), bus taikoma ši informacija.
Kadangi svarbu žinoti instrukcijas, kurias reikia duoti duomenų bazės tvarkytojui ir suprantama, kad ji naudojama kaip priemonė palaikyti daiktų interneto įrenginius, kurie būtų projekto objektas, tai gali būti pakanka naudoti konsolę, nes darbas su duomenų bazės serveriu bus retkarčiais. Jei valdymo darbo krūvis pradeda didėti, gali būti verta, nes patogiau naudoti tvarkyklę pačiame serveryje, pvz. phpMyAdmin (iš žiniatinklio naršyklės) arba lokaliai, nors, žinoma, pasiekiant duomenų bazės serverį, su administratoriumi, pvz., „MySQL Workbench“ iš kurių galima atlikti išplėstinėje GUI operacijos, kurios bus paaiškintos, ir daugelis kitų, kurios nepatenka į šį straipsnį ir nusipelno visos serijos.
Be daugiau ar mažiau automatinių operacijų, kurias galima atlikti su „MySQL Workbench“ serveryje, duomenų bazėse ar lentelėse taip pat galima atlikti užduotis „rankiniu būdu“ rašant ir vykdant pilnus scenarijus arba nepriklausomas komandas SQL. Tas pats kaip ir su įrankiu „MySQL Workbench“, SQL reikalingas atskiras skyrius ir kurį bus būtina nuodugniai žinoti, kai atliekama IoT žiniatinklio darbo dalis reikalauja rimtesnio dėmesio posistemės nei čia paaiškinta.
Bet kuriuo atveju ir, žinoma, norint išspręsti reikalingą apdorojamos IoT duomenų bazės konfigūraciją, galima naudoti konsolę.
Sukonfigūruokite pagrindinį „MySQL“ administratorių
Jei duomenų bazės serveris yra savo kompiuteryje, pirmiausia reikia sukonfigūruoti paslaugos administratoriaus teises, kad būtų galima kurti kitus vartotojus (kurie savo ruožtu jas gali turėti) ir, jei reikia, duomenų bazes ir lenteles. kurioje saugoma daiktų interneto sistemai reikalinga informacija.
Svarbu stebėti paslaugų rinkinio arba serverio diegimo procesą MySQL, atsižvelgiant į vykdomą procesą, nes daugeliu atvejų už šio ir kitų žingsnių atlikimą bus atsakingas pats montuotojas ir jų nereikės kartoti, išskyrus atvejus, kai norite pakeisti konfigūraciją.
Norėdami atlikti šias užduotis, paprastai dirbate su konsole. MySQL kaip administratorius. Norėdami pasiekti šį režimą, naudokite komandą mysql -u root -p
o sudo mysql -u root
jei naudojamas pirmą kartą ir diegimo metu vartotojas nebuvo sukonfigūruotas root
Į ordiną mysql -u root -p
nurodytas pasirinkimu -u
vartotojo vardas (root
) ir su galimybe -p
(slaptažodis), kad prisijungiant prie konsolės reikia paprašyti rakto MySQL. Norėdami grįžti į sistemos konsolę, galite naudoti komandą quit
Išeiti
Kaip matyti aukščiau esančioje ekrano kopijoje, prieš išeinant iš konsolės MySQL, norėdami nustatyti vartotojo teises root
buvo panaudota komanda:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
kuriame:
- suteikiamos visos privilegijos
GRANT ALL PRIVILEGES
- visose lentelėse visose duomenų bazėse
ON *.*
- vartotojui
root
prieiga iš įrenginio, kuriame veikia serveris MySQLTO 'root'@'localhost'
- naudojant 1234 kaip slaptažodį
IDENTIFIED BY '1234'
- su leidimu įgalioti kitus vartotojus
WITH GRANT OPTION
Norint valdyti duomenų bazę nuotoliniu būdu, atitinkamam vartotojui iš kitų vietų turi būti suteiktos teisės. Ankstesniame pavyzdyje tai buvo leidžiama root
pasiekiama iš įrenginio, kuriame veikia duomenų bazės serveris (localhost
) su 'root'@'localhost'
, jei naudojamas 'root'@'%'
Prieiga bus leidžiama iš bet kurios mašinos.
Jei sistemoje turite administratoriaus teises, galite iš naujo nustatyti vartotojo slaptažodį root
de MySQL. Norėdami tai padaryti, būtina sustabdyti paslaugą (mysql
o mysqld
, priklausomai nuo platinimo), paleiskite jį be rakto, nustatykite naują raktą root
ir paleiskite jį iš naujo. Prisijungiant be slaptažodžio taip pat galima suteikti aukščiau aprašytas privilegijas.
- sustabdyti paslaugą
sudo /etc/init.d/mysql stop
- paleisti MySQL be rakto ir atrakinkite konsolę
sudo mysqld_safe --skip-grant-tables &
- prieiga kaip «
root
»mysql -u root
- pakeisti slaptažodį:
- prieiti prie duomenų bazės «
mysql
"USE mysql;
- priskirti «
root
» raktas «1234»:UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
- taikyti naujas privilegijas:
FLUSH PRIVILEGES;
- išėjimo konsolė
mysql
ir grįžti į sistemą:quit
- prieiti prie duomenų bazės «
-
paleiskite paslaugą iš naujo
sudo /etc/init.d/mysql restart
Konfigūruokite nuotolinę prieigą prie duomenų bazės
Saugumo sumetimais pradinė duomenų bazės tvarkyklės konfigūracija MySQL neleidžia nuotolinės prieigos, norint ją pakeisti būtina redaguoti konfigūracijos dokumentą, įprastai my.cnf
, kuris dažniausiai sutinkamas maršrute /etc/mysql
.
Jei naudojamas MariaDB, kuri dabar yra „laisvesnė“ versija MySQL, tikrai my.cnf
bus nuoroda į /etc/alternatives/my.cnf
kuri savo ruožtu įkels konfigūraciją, naudojant !includedir
, iš maršruto dokumentų /etc/mysql/mariadb.conf.d
, tikriausiai iš dokumento 50-server.cnf
Išteklius, kuriuos duomenų bazės serveris naudoja, kad neatsižvelgtų į nuotolines užklausas, sudaro tik iš tam tikros vietos pateiktų užklausų „klausymas“. IP adresas kuri išreiškiama kaip parametro reikšmė bind-address
(kuris pakeičia klasiką skip-networking
) Kai adresas yra 127.0.0.1
(localhost
) atsižvelgiama tik į vietinio įrenginio užklausas. Jei komentavo su #
arba jei vertė yra 0.0.0.0
, aptarnaujame bet kokiu adresu. Norint leisti išorinę prieigą, saugiausia yra nurodyti IP adresas (kuris gali būti viešas arba privatus) kompiuterio, iš kurio jis pasiekiamas, paprastai kažkas panašaus bind-address = 192.168.1.74
. Jūsų atveju ši įranga gali veikti kaip a tunelis (peradresuoja su SSH) arba kaip pėsčiųjų taką (su pagrindinės ip lentelės), kad serveris nepatektų į kontroliuojamą tinklo sritį.
Viršuje esančioje ekrano kopijoje matote, kad ji buvo redaguota my.cnf
su konfigūracija MySQL naudojant užsakymą sudo nano /etc/mysql/my.cnf
. Tuo atveju, kai dirbama su MariaDB Su įprasta konfigūracija tvarka būtų kažkas panašaus sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
. Kaip minėta pirmiau, kai yra prieiga su administratoriaus teisėmis, a GUI kaip „MySQL Workbench“ reguliariam duomenų bazių valdymui.
Sukurkite duomenų bazes
Sukonfigūravus duomenų bazės serverį, galima sukurti duomenų bazes ir lenteles, kuriose bus saugomi daiktų interneto duomenys. Norėdami tai padaryti, galite naudoti komandas SQL iš konsolės arba iš GUI vadovo.
Užsakymas CREATE DATABASE
sukuria „temperatūrų“ duomenų bazę. Norint išvengti klaidų, galima naudoti formą temperaturas
;CREATE DATABASE IF NOT EXISTS
kuri sukurtų duomenų bazę „temperature_database“ tik tuo atveju, jei jos šiuo metu nėra.base_datos_temperaturas
;
Sukurkite lenteles
Kadangi skirtingose duomenų bazėse gali būti lentelių tuo pačiu pavadinimu, galite nurodyti vieną iš jų, prieš jos pavadinimą nurodydami duomenų bazės pavadinimą ir atskirdami jas tašku, pvz. base_datos.tabla
Šis žymėjimas taip pat gali būti išplėstas į laukų pavadinimus base.tabla.campo
Jei duomenų bazės pavadinimas yra praleistas dirbant su lentele (šiuo atveju ją kuriant), laikoma, kad nurodoma paskutinė pasirinkta. Norėdami aiškiai pasirinkti konkretų, galite naudoti komandą USE
ir nurodykite savo vardą USE
base_datos_temperaturas
;
Kuriant lenteles duomenų bazėse, atliekant tą pačią operaciją, dažniausiai pridedama jas formuojančių laukų informacija (nors jas galima ir vėliau keisti) Kaip ir duomenų bazėje, lentelę galima sukurti tik tada nėra pridedant sąlygą IF NOT EXISTS
arba priešingai, prieš kurdami lentelę ištrinkite ją tik tuo atveju, jei ji egzistuoja naudojant DROP TABLE IF EXISTS
valor_temperaturas
;
Kad būtų galima leisti lentelių ar duomenų bazių pavadinimus, kurie gali prieštarauti komandoms ar procedūroms, gilaus kirčio ženklas, kartais vadinamas apverstu kableliu, gali būti naudojamas pavadinimui apsupti ir išvengti konfliktų ar klaidų komandose. SQL.
Apibrėžkite laukus
Kuriant lentelę pridedami laukai nurodomi įterpiant juos į skliaustus ir nurodant juose saugomų duomenų tipą. Duomenų tipai, kurie paprastai naudojami duomenų bazėje informacijai iš įrenginių, prijungtų prie daiktų interneto, saugoti, yra sveikieji skaičiai (INT
o BIGINT
) po kablelio (DECIMAL
, DOUBLE
o FLOAT
) laiko (DATE
, TIME
, DATETIME
o TIMESTAMP
) ir tekstas (daugiausia VARCHAR
nors yra ir kitų panašių TEXT
bet jie nenaudojami daiktų internetui) Po duomenų tipo ir skliausteliuose pridedamas duomenų ilgis ir, jei taikoma, formatas arba tikslumas.
Pridedant AUTO_INCREMENT
Lauko apibrėžimas duomenų bazės valdytojui nurodo, kad jei nieko daugiau nenurodoma, kuriant naują įrašą turi būti automatiškai išsaugoma paskutinio įrašo reikšmė ir atitinkamas prieaugis (kuris paprastai yra 1). laukus, kurie naudojami kaip skaitiniai įrašų rodyklės.
Kodas NOT NULL
rodo, kad įrašo laukas negali būti tuščias, jame turi būti saugoma tam tikra reikšmė.
Naudojant DEFAULT
Kuriant lentelės lauką, jis nurodomas MySQL numatytoji lauko reikšmė, jei pridedant naują įrašą arba jį keičiant, kita reikšmė nėra aiškiai nurodyta. Dažnai naudojama numatytoji reikšmė, šiuo atveju stebint daiktų interneto vertes, yra CURRENT_TIMESTAMP
kuri leidžia automatiškai įrašyti esamą laiką lauke, kai sukuriamas naujas įrašas, todėl duomenys yra automatiškai identifikuojami laike.
Norint optimizuoti duomenų bazės veikimą, lentelės laukų apibrėžimo pabaigoje patogu įtraukti tą, kuris naudojamas kaip indeksas su sąlyga PRIMARY KEY (
ID yra laukas, pasirinktas kaip indeksas.ID
)
Lentelės apibrėžimo pabaigoje kaip parametro reikšmę galite nurodyti duomenų bazės variklį, su kuriuo ji valdoma ENGINE
su formatu ENGINE=InnoDB;
esamas InnoDB
šiuo atveju pasirinktas variklis.
Kurkite duomenų bazes, lenteles ir konfigūruokite laukus SQL seanso metu
Šiame pavyzdyje pateiktas kodas sujungia užsakymus, veiksmus, kuriuos reikėtų atlikti, kad būtų sukurta duomenų bazė su minimalia lentele.
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;
|
Sukurkite atsargines duomenų bazių kopijas
Sukonfigūravus serverį ir sukūrus duomenų bazę bei jos lenteles, viskas būtų paruošta saugoti daiktų interneto mazgų gautą informaciją. Nors šios straipsnių serijos dėmesys neapima priežiūros, yra viena svarbi administracinė problema, kurią svarbu išspręsti: atsarginės kopijos. Iš daugumos vadovų, įskaitant phpMyAdmin y „MySQL Workbench“, galima daryti ir atkurti atsargines kopijas, tačiau įprasta įtraukti jas į scenarijų, kuris jas automatizuoja (tikriausiai kartu su konfigūracija ir daugeliu kitų dokumentų), todėl įrankį naudoti patogiau. MySQLDump, klientas, kuris paprastai yra įprasto diegimo dalis MySQL, arba kokia nors alternatyva, pvz MySQL duomenų dumperis Kas įeina į užsakymą? mydumper
padaryti kopiją ir myloader
ją atkurti
MySQLDump
Užsakymo formatas mysqldump
Tai labai paprasta, tereikia nurodyti vartotojo vardą user
, Slaptažodis password
ir duomenų bazę, kurią norite kopijuoti, arba --all-databases
sukurti atsargines visų duomenų bazių kopijas, kaip parodyta šiame pavyzdyje:
mysqldump --opt --user=pelaez --password=1234 --all-databases > copia.sql
Ankstesnis pavyzdys sugeneruoja dokumentą copia.sql
kuriame yra įsakymai SQL (t. y. tekstas), reikalingas visoms duomenų bazėms atkurti. Išsaugoma teksto formatu kopija užima daug daugiau nei reikia, todėl ji taip pat dažniausiai suglaudinama, kad būtų sutaupyta vietos įrenginyje, kuriame ji saugoma.
Atsarginė kopija, sukurta naudojant pavyzdinę komandą, gali būti atkurta, jei informacija buvo prarasta dėl klaidos naudojant žemiau esančią komandą, kuri vykdo operacijas SQL dokumento copia.sql
mysql --user=pelaez --password=1234 < copia.sql
MySQL duomenų dumperis
Nors užtektų ir ankstesnių operacijų, ji naudojama labai dažnai MySQL duomenų dumperis, jau beveik standartas savo našumui, nors jis nėra pagrindinių įrankių dalis MySQL
Toliau pateikiamos parinktys mydumper
dažniausiai naudojami, kurie, logiškai mąstant, turėtų būti parašyti kaip tos pačios komandos dalis, atskirti tarpais, nors šiame tekste jie buvo suskirstyti į eilutes, kad būtų lengviau skaityti:
--host polaridad.es
„polaridad.es“ yra duomenų bazės serverio pavadinimas
--port 3306
"3306" yra prievado numeris, kurio serveris klauso (pagal numatytuosius nustatymus jis yra 3306)
--user pelaez
"pelaez" yra vartotojo, su kuriuo pasiekiama duomenų bazė, vardas
--password 1234
„1234“ yra vartotojo, su kuriuo prisijungiama prie duomenų bazės, slaptažodis
--database temperaturas
„temperatūros“ yra duomenų bazės, kuriai daroma atsarginė kopija, pavadinimas
--no-locks
neužrakinkite duomenų bazės kopijavimo metu (pagal numatytuosius nustatymus ji užrakinama)
--build-empty-files
taip pat nukopijuokite tuščias lenteles
--compress-input
suspausti įvestį
--compress
suspausti išvestį (gautą atsarginę kopiją)
Norėdami atkurti atsarginę kopiją, gautą naudojant mydumper
jis naudojamas myloader
kuri pirmiausia naudojama su šiomis parinktimis, kurios turi būti įtrauktos ta pačia tvarka, atskirtos tarpais:
--host polaridad.es
„polaridad.es“ yra duomenų bazės serverio pavadinimas
--port 3306
"3306" yra prievado numeris, kurio serveris klauso (pagal numatytuosius nustatymus jis yra 3306)
--user pelaez
"pelaez" yra vartotojo, su kuriuo pasiekiama duomenų bazė, vardas
--password 1234
„1234“ yra vartotojo, su kuriuo prisijungiama prie duomenų bazės, slaptažodis
--directory=copia_iot
„iot_copy“ yra aplankas, kuriame yra sugeneruota kopija mydumper
--overwrite-tables
perrašyti lenteles, net jei jos jau yra
--verbose 3
"3" yra proceso informacijos laipsnis (aukštesnis, daugiau pranešimų)
-C
naudoti duomenų srauto suspaudimą
Kitame (ir paskutiniame) šios serijos straipsnyje paaiškinama kaip naudojant PHP programavimo kalbą prie daiktų interneto prijungtų įrenginių gautą informaciją saugoti duomenų bazėse apie kuriuos buvo kalbama šiame tekste.
Rašyti komentarą