Paruoškite MySQL arba MariaDB duomenų bazę

Paruoškite MySQL arba MariaDB duomenų bazę

Paruoškite MySQL arba MariaDB duomenų bazę

IoT žiniatinklio serverisHTTP POST IoT žiniatinklio serverisMySQL duomenų bazė. IoT žiniatinklio serverisPHP kalbos IoT žiniatinklio serveris

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.

„MySQL Workbench“ administratoriaus skydelis

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.

MySQL Workbench SQL užklausų rengyklė

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

MySQL root vartotojo konfigūravimas iš konsolės

Į 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 MySQL TO '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
  • 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į.

„MySQL“ duomenų bazės konfigūracija redaguojant failą my.cnf (ir etc mysql)

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 temperaturas; sukuria „temperatūrų“ duomenų bazę. Norint išvengti klaidų, galima naudoti formą CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; kuri sukurtų duomenų bazę „temperature_database“ tik tuo atveju, jei jos šiuo metu nėra.

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) ID yra laukas, pasirinktas kaip indeksas.

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.

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ą

Galbūt praleidote