Pripravte databázu MySQL alebo MariaDB

Pripravte databázu MySQL alebo MariaDB

Pripravte databázu MySQL alebo MariaDB

IoT webový serverHTTP POST IoT webový serverDatabáza MySQL. IoT webový serverWebový server IoT v jazyku PHP

Nakonfigurujte databázový server

Po nainštalovaní sady služieb LAMP, WAMP, Mampi o XAMPP Ako je vysvetlené v prvom článku série alebo jednoducho po inštalácii na stroj, ktorý bude fungovať ako server súhrnu aplikácií, ktoré implementujú zodpovedajúce služby, je potrebné upraviť niektoré aspekty konfigurácie databázového servera MySQL ako aj vytváranie databáz a tabuliek, ktoré sa budú na webovom serveri používať na ukladanie údajov zo zariadení internetu vecí.

Ak sa použije verejný server, poskytovateľ určite poskytne nejaký typ panelu na sprostredkovanie medzi používateľom a „skutočnou“ konfiguráciou databázy, aby sa posilnila bezpečnosť prevádzky. Ak áno, budete musieť postupovať podľa pokynov, ktoré ponúka tento poskytovateľ. V prípade skutočného alebo virtuálneho servera umiestneného v zariadeniach tretej strany môže nastať porovnateľná okolnosť, keď ho spravuje poskytovateľ; Ak bol zazmluvnený nespravovaný server (poskytovateľom, spravovaný používateľom), platia nasledujúce informácie.

Keďže dôležité je poznať pokyny, ktoré musia byť poskytnuté správcovi databázy a rozumie sa, že sa používa ako prostriedok na podporu zariadení pre internet vecí, ktoré by boli predmetom projektu, môže byť dosť na používanie konzoly, pretože práca na samotnom databázovom serveri bude príležitostná. Ak sa zaťaženie správy začne zvyšovať, možno sa oplatí, pretože je pohodlnejšie použiť správcu na samotnom serveri, ako je populárny phpMyAdmin (z webového prehliadača) alebo lokálne, aj keď samozrejme s prístupom na databázový server, s administrátorom ako napr pracovný stôl mysql z ktorých vystupovať v pokročilom GUI operácie, ktoré budú vysvetlené a mnohé ďalšie, ktoré sú mimo tohto článku a ktoré si zaslúžia celú sériu.

Admin Panel MySQL Workbench

Okrem viac-menej automatických operácií, ktoré sa dajú robiť pracovný stôl mysql na serveri, databázach alebo tabuľkách je tiež možné vykonávať úlohy „ručne“ písaním a spúšťaním kompletných skriptov alebo nezávislých príkazov v SQL. Rovnako ako s nástrojom pracovný stôl mysql, SQL si vyžaduje samostatnú kapitolu a ktorú bude nevyhnutné poznať do hĺbky, keď časť práce na webe internetu vecí, ktorá sa vykonáva, si vyžaduje vážnejšiu pozornosť backend než je tu vysvetlené.

MySQL Workbench SQL Query Editor

V každom prípade a samozrejme na vyriešenie potrebnej konfigurácie spracovávanej IoT databázy je možné použiť konzolu.

Nakonfigurujte root, hlavného správcu MySQL

Ak je databázový server na vlastnom počítači, prvá vec, ktorú musíte urobiť, je nakonfigurovať oprávnenia správcu služby tak, aby bolo možné pomocou týchto oprávnení vytvárať iných používateľov (ktorí ich zase môžu mať) a prípadne databázy a tabuľky. do ktorého sa ukladajú informácie, ktoré systém internetu vecí potrebuje.

Je dôležité venovať pozornosť procesu inštalácie sady služieb alebo servera MySQL, v závislosti od postupu, ktorý nasleduje, pretože v mnohých prípadoch bude vykonaním tohto a ďalších krokov poverený samotný inštalátor a nebude potrebné ich opakovať okrem prípadu, keď chcete upraviť konfiguráciu.

Na vykonanie týchto úloh zvyčajne pracujete s konzolou. MySQL ako správca. Na prístup do tohto režimu použite príkaz mysql -u root -p o sudo mysql -u root pri prvom použití a počas inštalácie nebol používateľ nakonfigurovaný root

Konfigurácia užívateľa root MySQL z konzoly

Do Rádu mysql -u root -p označené s možnosťou -u používateľské meno (root) as možnosťou -p (heslo), že kľúč je potrebné vyžiadať pri prístupe ku konzole MySQL. Na návrat do systémovej konzoly môžete použiť príkaz quit ísť von

Ako je vidieť na obrázku vyššie, pred opustením konzoly MySQL, na nastavenie privilégií používateľa root bol použitý príkaz:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
v ktorom:

  • všetky privilégiá sú udelené GRANT ALL PRIVILEGES
  • vo všetkých tabuľkách vo všetkých databázach ON *.*
  • používateľovi root prístup zo stroja, na ktorom beží server MySQL TO 'root'@'localhost'
  • pomocou hesla 1234 IDENTIFIED BY '1234'
  • s povolením autorizovať iných používateľov WITH GRANT OPTION

Aby bolo možné spravovať databázu na diaľku, musia byť príslušnému používateľovi udelené privilégiá z iných miest. V predchádzajúcom príklade to bolo povolené root prístupné zo stroja, na ktorom beží databázový server (localhost) s 'root'@'localhost', ak sa používa 'root'@'%' Prístup bude povolený z akéhokoľvek stroja.

Ak máte v systéme privilégiá správcu, môžete znova nastaviť heslo používateľa root de MySQL. Na to je potrebné zastaviť službu (mysql o mysqld, v závislosti od distribúcie), nabootujte ho bez kľúča, nastavte nový kľúč root a reštartujte ho. Prístupom bez hesla je tiež možné udeliť privilégiá opísané vyššie.

  • zastaviť službu sudo /etc/init.d/mysql stop
  • odpálenie MySQL bez kľúča a odomknite konzolu sudo mysqld_safe --skip-grant-tables &
  • prístup ako «root» mysql -u root
  • zmeniť heslo:
    • prístup do databázy «mysql»: USE mysql;
    • priradiť "root» kľúč «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • použiť nové privilégiá: FLUSH PRIVILEGES;
    • výstupná konzola mysql a vrátiť sa do systému: quit
  • reštartovať službu sudo /etc/init.d/mysql restart

Nakonfigurujte vzdialený prístup k databáze

Z bezpečnostných dôvodov úvodná konfigurácia databázového manažéra MySQL neumožňuje vzdialený prístup, na jeho zmenu je potrebné upraviť konfiguračný dokument, normálne my.cnf, ktorý sa zvyčajne nachádza na trase /etc/mysql.

Ak sa používa mariadb, ktorá je teraz „voľnejšou“ verziou MySQL, iste my.cnf bude odkaz na /etc/alternatives/my.cnf ktorý následne načíta konfiguráciu pomocou !includedir, z dokladov o trase /etc/mysql/mariadb.conf.d, pravdepodobne z dokumentu 50-server.cnf

Prostriedok, ktorý databázový server používa na to, aby sa nezaoberal vzdialenými požiadavkami, pozostáva z "počúvania" iba požiadaviek uskutočnených z určitého miesta. IP adresa ktorá je vyjadrená ako hodnota parametra bind-address (ktorý nahrádza klasiku skip-networking) Keď je adresa 127.0.0.1 (localhost) spracovávajú sa iba požiadavky z lokálneho počítača. Ak je komentovaný s # alebo ak je hodnota 0.0.0.0, obslúžime akúkoľvek adresu. Ak chcete povoliť externý prístup, najbezpečnejšie je označiť IP adresa (ktorý môže byť verejný alebo súkromný) počítača, z ktorého sa pristupuje, zvyčajne niečo ako bind-address = 192.168.1.74. Vo vašom prípade môže toto zariadenie fungovať ako a tunel (presmerovanie pomocou SSH) alebo ako chodník (s core ip tabuľky), aby ste predišli vystaveniu servera mimo kontrolovanej oblasti siete.

Konfigurácia databázy MySQL úpravou súboru my.cnf (v atď mysql)

Na snímke obrazovky vyššie môžete vidieť, že bola upravená my.cnf s konfiguráciou MySQL pomocou objednávky sudo nano /etc/mysql/my.cnf. V prípade práce s mariadb Pri bežnej konfigurácii by bolo poradie niečo podobné sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. Ako už bolo spomenuté vyššie, akonáhle existuje prístup s oprávneniami správcu, a GUI ako pracovný stôl mysql pre pravidelnú správu databázy.

Vytvorte databázy

Po nakonfigurovaní databázového servera je možné vytvoriť databázy a tabuľky, do ktorých sa budú ukladať údaje IoT. Na tento účel môžete použiť príkazy SQL z konzoly alebo z GUI manažéra.

Objednávka CREATE DATABASE temperaturas; vytvorí databázu „teplôt.“ Aby sa predišlo chybám, je možné použiť formulár CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; ktorý by vytvoril databázu „temperature_database“ iba v prípade, že v súčasnosti neexistuje.

Vytvorte tabuľky

Keďže v rôznych databázach môžu existovať tabuľky s rovnakým názvom, môžete sa na jednu z nich odkázať tak, že jej názov predpíšete pred názvom databázy a obe oddelíte bodkou, niečo ako base_datos.tabla Tento zápis možno rozšíriť aj na názvy polí base.tabla.campo

Ak sa pri práci s tabuľkou (v tomto prípade pri jej vytváraní) vynechá názov databázy, považuje sa za odkazovaný posledný vybraný. Ak chcete výslovne vybrať konkrétny, môžete použiť príkaz USE a uveďte svoje meno USE base_datos_temperaturas;

Pri vytváraní tabuliek v databázach sa v tej istej operácii zvyčajne pridávajú informácie o poliach, ktoré ich tvoria (aj keď je možné ich neskôr zmeniť). Rovnako ako v prípade databázy je možné tabuľku vytvoriť iba vtedy, ak neexistuje pridanie klauzuly IF NOT EXISTS alebo naopak, pred vytvorením tabuľky sa uistite, že ste ju vymazali, iba ak existuje pomocou DROP TABLE IF EXISTS valor_temperaturas;

Ak chcete povoliť názvy tabuliek alebo databáz, ktoré by mohli byť v konflikte s príkazmi alebo procedúrami, môžete použiť znamienko s vážnym diakritickým znamienkom, niekedy nazývané obrátená čiarka, ktoré obklopí názov a zabráni konfliktom alebo chybám v príkazoch. SQL.

Definujte polia

Polia, ktoré sa pridávajú pri vytváraní tabuľky, sú označené tak, že sú uzavreté v zátvorkách a označujú sa typ údajov, ktoré ukladajú. Typy údajov, ktoré sa zvyčajne používajú v databáze na ukladanie informácií zo zariadení pripojených k internetu vecí, sú celé čísla (INT o BIGINT) desatinné miesta (DECIMAL, DOUBLE o FLOAT) času (DATE, TIME, DATETIME o TIMESTAMP) a text (hlavne VARCHAR aj keď sú aj iní ako TEXT ale nepoužívajú sa pre internet vecí) Za typ údajov a v zátvorkách sa pridá dĺžka údajov a prípadne formát alebo presnosť.

Pridaním AUTO_INCREMENT Definícia poľa oznamuje správcovi databázy, že ak nie je uvedené nič iné, pri vytváraní nového záznamu sa musí automaticky uložiť hodnota posledného záznamu plus zodpovedajúci prírastok (čo je zvyčajne 1). Zvyčajne je zahrnuté v polia, ktoré sa používajú ako číselné indexy záznamov.

Kód NOT NULL označuje, že pole v zázname nemôže byť prázdne, musí obsahovať nejakú hodnotu.

Pri použití DEFAULT Pri vytváraní poľa tabuľky je to uvedené MySQL predvolená hodnota pre pole za predpokladu, že pri pridávaní nového záznamu alebo jeho úprave nie je výslovne uvedená iná hodnota. Často používaná predvolená hodnota, v tomto prípade na sledovanie hodnôt internetu vecí, je CURRENT_TIMESTAMP ktorý umožňuje automaticky zaznamenávať aktuálny čas do poľa pri vytváraní nového záznamu, takže údaje sú automaticky identifikované v čase.

Na optimalizáciu výkonu databázy je vhodné zahrnúť na koniec definície polí tabuľky jedno, ktoré sa používa ako index s klauzulou PRIMARY KEY (ID) ID je pole zvolené ako index.

Na konci definície tabuľky môžete ako hodnotu parametra uviesť databázový stroj, pomocou ktorého je riadená ENGINE s formátom ENGINE=InnoDB; bytia InnoDB motor zvolený v tomto prípade.

Vytvárajte databázy, tabuľky a konfigurujte polia v relácii SQL

Kód v nasledujúcom príklade spája objednávky, kroky, ktoré by bolo potrebné vykonať, aby sa vytvorila databáza s minimálnou tabuľkou.

Vytvorte záložné kópie databáz

Po nakonfigurovaní servera a vytvorení databázy a jej tabuliek by bolo všetko pripravené na uloženie informácií získaných uzlami internetu vecí. Hoci zameranie tejto série článkov nezahŕňa údržbu, je tu jeden kritický administratívny problém, ktorý je dôležité riešiť: zálohy. Od väčšiny manažérov, vrátane phpMyAdmin y pracovný stôl mysql, je možné vytvárať a obnovovať záložné kópie, ale je bežné ich zahrnúť do skriptu, ktorý ich automatizuje (pravdepodobne spolu s konfiguráciou a mnohými ďalšími dokumentmi), takže je pohodlnejšie používať nástroj MySQLDump, klient, ktorý je zvyčajne súčasťou bežnej inštalácie MySQL, alebo nejaká alternatíva ako MySQL Data Dumper Čo zahŕňa objednávka? mydumper vytvoriť kópiu a myloader obnoviť ho

MySQLDump

Formát objednávky mysqldump Je to veľmi jednoduché, stačí zadať používateľské meno user, Heslo password a databázu, ktorú chcete kopírovať resp --all-databases zálohovať všetky databázy ako v nasledujúcom príklade:

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

Predchádzajúci príklad vygeneruje dokument copia.sql ktorý obsahuje objednávky SQL (t.j. text) potrebný na prebudovanie všetkých databáz. Pri ukladaní v textovom formáte zaberá kópia oveľa viac, ako je potrebné, preto sa tiež zvyčajne komprimuje, aby sa ušetrilo miesto na zariadení, na ktorom je uložená.

Zálohu vygenerovanú pomocou príkladu príkazu je možné obnoviť, ak sa informácie stratili v dôsledku chyby príkazu nižšie, ktorý vykonáva operácie SQL dokumentu copia.sql

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

MySQL Data Dumper

Hoci predchádzajúce operácie by postačovali, je veľmi bežné používať MySQL Data Dumper, už takmer štandardom pre jeho výkon, hoci nie je súčasťou základných nástrojov, ktoré sú súčasťou dodávky MySQL

Nasledujúce sú možnosti mydumper najpoužívanejšie, ktoré by, logicky, malo byť napísané ako súčasť toho istého príkazu, oddelené medzerami, hoci v tomto texte boli rozdelené do riadkov, aby sa uľahčilo čítanie:

--host polaridad.es “polaridad.es” je názov databázového servera
--port 3306 "3306" je číslo portu, na ktorom server počúva (v predvolenom nastavení je to 3306)
--user pelaez "pelaez" je meno používateľa, s ktorým sa pristupuje k databáze
--password 1234 „1234“ je heslo používateľa, s ktorým sa pristupuje k databáze
--database temperaturas „teploty“ je názov databázy, ktorá sa zálohuje
--no-locks nezamykajte databázu počas kopírovania (v predvolenom nastavení sa uzamkne)
--build-empty-files kopírovať aj prázdne tabuľky
--compress-input komprimovať vstup
--compress komprimovať výstup (výslednú zálohu)

Ak chcete obnoviť zálohu získanú pomocou mydumper je to použité myloader ktorý sa primárne používa s nasledujúcimi možnosťami, ktoré musia byť zahrnuté v rovnakom poradí oddelené medzerami:

--host polaridad.es “polaridad.es” je názov databázového servera
--port 3306 "3306" je číslo portu, na ktorom server počúva (v predvolenom nastavení je to 3306)
--user pelaez "pelaez" je meno používateľa, s ktorým sa pristupuje k databáze
--password 1234 „1234“ je heslo používateľa, s ktorým sa pristupuje k databáze
--directory=copia_iot «iot_copy» je priečinok, v ktorom sa nachádza kópia vygenerovaná pomocou mydumper
--overwrite-tables prepísať tabuľky, aj keď už existujú
--verbose 3 „3“ je stupeň informovanosti procesu (vyššie, viac správ)
-C použiť kompresiu v dátovom toku

Ďalší (a posledný) článok v tejto sérii vysvetľuje ako pomocou programovacieho jazyka PHP ukladať informácie získané zariadeniami pripojenými k internetu vecí do databáz o ktorých sa hovorilo v tomto texte.

Pridať komentár

Možno ste zmeškali