Ihanda ang MySQL o MariaDB database

Ihanda ang MySQL o MariaDB database

Ihanda ang MySQL o MariaDB database

IoT web serverHTTP POST IoT Web ServerMySQL Database. IoT web serverPHP Language IoT Web Server

I-configure ang database server

Kapag na-install na ang hanay ng mga serbisyo Lampara, WAMP, MAMP o XAMPP Tulad ng ipinaliwanag sa unang artikulo ng serye o pagkatapos lamang i-install sa makina na gaganap bilang isang server ang kabuuan ng mga application na nagpapatupad ng kaukulang mga serbisyo, kinakailangan upang ayusin ang ilang aspeto ng configuration ng database server MySQL pati na rin ang paglikha ng mga database at talahanayan na gagamitin sa web server upang mag-imbak ng data mula sa mga aparatong Internet of Things.

Kung gumamit ng pampublikong server, tiyak na magbibigay ang provider ng ilang uri ng panel upang mamagitan sa pagitan ng user at ng "tunay" na configuration ng database upang mapalakas ang seguridad sa operasyon. Kung gayon, kailangan mong sumangguni sa mga tagubilin na inaalok ng provider na ito. Sa kaso ng isang tunay o virtual na server na naka-host sa mga pasilidad ng isang third party, maaaring lumitaw ang isang maihahambing na pangyayari kapag pinamahalaan ito ng provider; Kung ang isang hindi pinamamahalaang server ay kinontrata (ng provider, pinamamahalaan ng user), ang sumusunod na impormasyon ay ilalapat.

Dahil ang mahalagang bagay ay malaman ang mga tagubilin na dapat ibigay sa tagapamahala ng database at nauunawaan na ginagamit ito bilang paraan upang suportahan ang mga device para sa Internet of Things, na magiging object ng proyekto, maaaring ito ay sapat na upang magamit ang console dahil ang trabaho sa database server mismo ay paminsan-minsan. Kung nagsimulang tumaas ang workload ng pamamahala, maaaring sulit ito, dahil mas maginhawa, gumamit ng manager sa server mismo, tulad ng sikat na phpMyAdmin (mula sa isang web browser) o lokal, bagaman siyempre ina-access ang database server, kasama ang isang administrator tulad ng mysql workbench mula sa kung saan upang gumanap sa isang advanced GUI ang mga pagpapatakbo na ipapaliwanag at marami pang iba na nasa labas ng artikulong ito at nararapat sa isang buong serye.

MySQL Workbench Admin Panel

Bilang karagdagan sa higit pa o mas kaunting mga awtomatikong pagpapatakbo na maaaring gawin sa mysql workbench sa server, mga database o mga talahanayan posible ring magsagawa ng mga gawain nang "manu-mano" sa pamamagitan ng pagsulat at pagpapatupad ng mga kumpletong script o mga independiyenteng utos sa SQL. Katulad ng sa tool mysql workbench, SQL ay nangangailangan ng isang hiwalay na kabanata at kung saan ay mahalaga upang malaman nang malalim kapag ang bahagi ng IoT web work na isinasagawa ay nagsasangkot ng mas seryosong atensyon sa backend kaysa sa ipinaliwanag dito.

MySQL Workbench SQL Query Editor

Sa anumang kaso, at siyempre upang malutas ang kinakailangang pagsasaayos ng database ng IoT na pinoproseso, maaaring gamitin ang console.

I-configure ang ugat, ang pangunahing administrator ng MySQL

Kung ang database server ay nasa sarili nitong makina, ang unang bagay na dapat gawin ay i-configure ang mga pahintulot ng tagapangasiwa ng serbisyo upang makagawa, gamit ang mga pribilehiyong iyon, iba pang mga user (na maaaring mayroon nito) at, kung naaangkop, ang mga database at talahanayan kung saan iimbak ang impormasyong kailangan ng sistema ng Internet of Things.

Mahalagang dumalo sa proseso ng pag-install ng hanay ng mga serbisyo o ng server MySQL, depende sa prosesong sinundan, dahil, sa maraming kaso, ang installer mismo ang mamamahala sa pagsasagawa ng hakbang na ito at sa iba pa at hindi na kailangang ulitin ang mga ito maliban kung gusto mong baguhin ang configuration.

Upang maisagawa ang mga gawaing ito, karaniwan kang nagtatrabaho sa console. MySQL bilang tagapangasiwa. Upang ma-access ang mode na ito, gamitin ang command mysql -u root -p o sudo mysql -u root kung ginamit sa unang pagkakataon at sa panahon ng pag-install ang user ay hindi pa na-configure root

Pag-configure ng MySQL root user mula sa console

Sa Order mysql -u root -p ipinahiwatig kasama ng opsyon -u ang username (root) at may opsyon -p (password) na dapat hilingin ang susi kapag ina-access ang console MySQL. Upang bumalik sa system console maaari mong gamitin ang command quit lumabas

Gaya ng nakikita sa screenshot sa itaas, bago umalis sa console MySQL, upang itakda ang mga pribilehiyo ng user root ang utos ay ginamit:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
kung saan:

  • lahat ng mga pribilehiyo ay ipinagkaloob GRANT ALL PRIVILEGES
  • sa lahat ng mga talahanayan sa lahat ng mga database ON *.*
  • sa gumagamit root pag-access mula sa makina na nagpapatakbo ng server MySQL TO 'root'@'localhost'
  • gamit ang 1234 bilang password IDENTIFIED BY '1234'
  • na may pahintulot na pahintulutan ang ibang mga gumagamit WITH GRANT OPTION

Upang pamahalaan ang database nang malayuan, ang mga pribilehiyo ay dapat ibigay sa kaukulang user mula sa ibang mga lokasyon. Sa nakaraang halimbawa, pinayagan ito root na-access mula sa makina kung saan tumatakbo ang database server (localhost) kasama 'root'@'localhost', kung ginamit 'root'@'%' Papayagan ang pag-access mula sa anumang makina.

Kung mayroon kang mga pribilehiyo ng administrator sa system, maaari mong muling itatag ang password ng user root de MySQL. Upang gawin ito, kinakailangan na ihinto ang serbisyo (mysql o mysqld, depende sa pamamahagi), i-boot ito nang walang susi, itakda ang bagong susi root at i-restart ito. Sa pamamagitan ng pag-access nang walang password, posible ring ibigay ang mga pribilehiyong inilarawan sa itaas.

  • itigil ang serbisyo sudo /etc/init.d/mysql stop
  • ilunsad MySQL walang susi at i-unlock ang console sudo mysqld_safe --skip-grant-tables &
  • access bilang «root» mysql -u root
  • baguhin ang password:
    • i-access ang database «mysql»: USE mysql;
    • italaga kay «root» ang susi «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • ilapat ang mga bagong pribilehiyo: FLUSH PRIVILEGES;
    • lumabas sa console mysql at bumalik sa system: quit
  • muling simulan ang serbisyo sudo /etc/init.d/mysql restart

I-configure ang malayuang pag-access sa database

Para sa mga kadahilanang pangseguridad, ang paunang pagsasaayos ng database manager MySQL ay hindi pinapayagan ang malayuang pag-access, upang baguhin ito ay kinakailangan upang i-edit ang dokumento ng pagsasaayos, normal my.cnf, na kadalasang matatagpuan sa ruta /etc/mysql.

Kung ginamit na MariaDB, na ngayon ay ang "mas malayang" bersyon, ng MySQL, tiyak my.cnf ay magiging isang link sa /etc/alternatives/my.cnf na, naman, maglo-load ng configuration, gamit !includedir, mula sa mga dokumento ng ruta /etc/mysql/mariadb.conf.d, malamang mula sa dokumento 50-server.cnf

Ang mapagkukunan na ginagamit ng database server upang hindi makadalo sa mga malayuang kahilingan ay binubuo ng "pakikinig" lamang sa mga kahilingang ginawa mula sa isang partikular na lokasyon. IP adress na kung saan ay ipinahayag bilang ang halaga ng parameter bind-address (na pumapalit sa classic skip-networking) Kapag ang address ay 127.0.0.1 (localhost) tanging mga kahilingan mula sa lokal na makina ang tinutugunan. Kung nagkomento ng # o kung ang halaga ay 0.0.0.0, naghahatid kami ng anumang address. Upang payagan ang panlabas na pag-access, ang pinakaligtas na bagay ay ipahiwatig ang IP adress (na maaaring pampubliko o pribado) ng computer kung saan ito na-access, kadalasan ay katulad ng bind-address = 192.168.1.74. Sa iyong kaso, ang kagamitang ito ay maaaring kumilos bilang isang lagusan (nagre-redirect gamit ang SSH) o bilang isang daanan (na may mga talahanayan ng core ip) upang maiwasang ilantad ang server sa labas ng isang kontroladong lugar ng network.

MySQL database configuration sa pamamagitan ng pag-edit ng my.cnf file (sa etc mysql)

Sa screenshot sa itaas makikita mo na ito ay na-edit my.cnf kasama ang pagsasaayos MySQL gamit ang order sudo nano /etc/mysql/my.cnf. Sa kaso ng pakikipagtulungan sa MariaDB Sa karaniwang pagsasaayos, ang pagkakasunud-sunod ay magiging katulad sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. Gaya ng nabanggit sa itaas, kapag may access na may mga pribilehiyong pang-administratibo, a GUI bilang mysql workbench para sa regular na pamamahala ng database.

Lumikha ng mga database

Kapag na-configure na ang database server, maaaring malikha ang mga database at talahanayan kung saan iimbak ang data ng IoT. Upang gawin ito, maaari mong gamitin ang mga utos SQL mula sa console o mula sa GUI ng isang manager.

Ang pagkakasunud-sunod CREATE DATABASE temperaturas; lumilikha ng database ng "mga temperatura." Upang maiwasan ang mga error, maaaring gamitin ang form CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; na lilikha ng database na "temperature_database" lamang kung hindi ito kasalukuyang umiiral.

Lumikha ng mga talahanayan

Tulad ng sa iba't ibang mga database ay maaaring mayroong mga talahanayan na may parehong pangalan, maaari kang sumangguni sa isa sa mga ito sa pamamagitan ng unahan ng pangalan nito kasama ng database at paghihiwalay pareho ng isang tuldok, tulad ng base_datos.tabla Ang notasyong ito ay maaari ding i-extend sa mga pangalan ng mga field base.tabla.campo

Kung ang pangalan ng database ay tinanggal kapag tumatakbo sa isang talahanayan (sa kasong ito, kapag nilikha ito) ito ay itinuturing na ang huling napili ay isinangguni. Upang hayagang pumili ng isang partikular, maaari mong gamitin ang command USE at ipahiwatig ang iyong pangalan USE base_datos_temperaturas;

Kapag lumilikha ng mga talahanayan sa mga database, sa parehong operasyon, ang impormasyon ng mga patlang na bumubuo sa kanila ay karaniwang idinaragdag (bagama't posible ring baguhin ang mga ito sa ibang pagkakataon). Gaya ng ginagawa sa database, ang talahanayan ay mabubuo lamang kung ito ay gagawin. hindi umiiral ang pagdaragdag ng sugnay IF NOT EXISTS o sa kabaligtaran, siguraduhing tanggalin ang talahanayan bago ito likhain lamang kung mayroon itong ginagamit DROP TABLE IF EXISTS valor_temperaturas;

Upang payagan ang mga pangalan ng mga talahanayan o database na maaaring sumalungat sa mga utos o pamamaraan, ang grave accent mark, kung minsan ay tinatawag na inverted comma, ay maaaring gamitin upang palibutan ang pangalan at maiwasan ang mga salungatan o mga error sa mga command. SQL.

Tukuyin ang mga patlang

Ang mga field na idinagdag kapag lumilikha ng talahanayan ay ipinahiwatig sa pamamagitan ng paglalagay ng mga ito sa mga panaklong at pagpapakita ng uri ng data na iniimbak nila. Ang mga uri ng data na karaniwang ginagamit sa isang database upang mag-imbak ng impormasyon mula sa mga device na konektado sa Internet of Things ay mga integer (INT o BIGINT) mga desimal (DECIMAL, DOUBLE o FLOAT) ng oras (DATE, TIME, DATETIME o TIMESTAMP) at teksto (pangunahin VARCHAR bagama't may iba pang katulad TEXT ngunit hindi ginagamit ang mga ito para sa IoT) Pagkatapos ng uri ng data, at sa mga panaklong, ang haba ng data at, kung naaangkop, idinaragdag ang format o katumpakan.

Sa pagdaragdag AUTO_INCREMENT Ang kahulugan ng isang patlang ay nagpapahiwatig sa tagapamahala ng database na, kung wala nang iba pang ipinahiwatig, kapag lumilikha ng isang bagong talaan ang halaga ng huling isa kasama ang katumbas na pagtaas ay dapat na awtomatikong maiimbak (na karaniwan ay 1). Karaniwan itong kasama sa mga field na ginagamit bilang mga numerical index ng mga talaan.

Ang code NOT NULL ay nagpapahiwatig na ang isang patlang sa isang talaan ay hindi maaaring walang laman, dapat itong mag-imbak ng ilang halaga.

Kapag gumagamit DEFAULT Kapag lumilikha ng isang patlang ng isang talahanayan, ito ay ipinahiwatig MySQL isang default na halaga para sa field sa kondisyon na kapag nagdaragdag ng isang bagong tala o binago ito, isa pang halaga ay hindi hayagang ipinahiwatig. Ang isang madalas na ginagamit na default na halaga, sa kasong ito upang masubaybayan ang mga halaga ng IoT, ay CURRENT_TIMESTAMP na nagbibigay-daan sa iyong awtomatikong i-record ang kasalukuyang oras sa isang field kapag gumagawa ng bagong record, kaya awtomatikong natukoy ang data sa oras.

Upang ma-optimize ang pagganap ng database, maginhawang isama sa dulo ng kahulugan ng mga patlang ng talahanayan ang isa na ginagamit bilang isang index na may sugnay. PRIMARY KEY (ID) ID ang napiling field bilang index.

Sa dulo ng kahulugan ng isang talahanayan maaari mong ipahiwatig ang database engine kung saan ito ay pinamamahalaan bilang ang halaga ng parameter ENGINE kasama ang format ENGINE=InnoDB; pagkatao InnoDB pinili ang makina sa kasong ito.

Lumikha ng mga database, talahanayan at i-configure ang mga field sa isang SQL session

Pinagsasama-sama ng code sa sumusunod na halimbawa ang mga order, ang mga hakbang na dapat gawin, upang lumikha ng database na may pinakamababang talahanayan.

Gumawa ng mga backup na kopya ng mga database

Kapag na-configure na ang server at nagawa na ang database at ang mga talahanayan nito, magiging handa na ang lahat para iimbak ang impormasyong nakuha ng mga IoT node. Bagama't ang pokus ng seryeng ito ng mga artikulo ay hindi kasama ang pagpapanatili, mayroong isang kritikal na isyu sa pangangasiwa na mahalagang tugunan: mga backup. Mula sa karamihan ng mga tagapamahala, kabilang ang phpMyAdmin y mysql workbench, ang mga backup na kopya ay maaaring gawin at ibalik ngunit karaniwan na isama ang mga ito sa isang script na nag-automate sa kanila (marahil kasama ang pagsasaayos at marami pang ibang mga dokumento) kaya mas madaling gamitin ang tool. MySQLDump, isang kliyente na karaniwang bahagi ng isang kumbensyonal na pag-install ng MySQL, o ilang alternatibo tulad ng MySQL Data Dumper Ano ang kasama sa order? mydumper upang gawin ang kopya at myloader para maibalik ito

MySQLDump

Ang format ng order mysqldump Ito ay napaka-simple, kailangan mo lamang ipahiwatig ang username user, Password password at ang database na gusto mong kopyahin o --all-databases upang i-backup ang lahat ng mga database tulad ng sa sumusunod na halimbawa:

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

Ang nakaraang halimbawa ay bumubuo ng dokumento copia.sql na naglalaman ng mga order SQL (i.e. text) na kailangan para muling buuin ang lahat ng database. Kapag nai-save sa format ng teksto, ang kopya ay tumatagal ng higit pa kaysa sa kinakailangan, kung kaya't ito ay karaniwang naka-compress upang makatipid ng espasyo sa device kung saan ito naka-imbak.

Ang backup na nabuo gamit ang halimbawang command ay maaaring maibalik kung ang impormasyon ay nawala dahil sa isang error sa command sa ibaba na nagsasagawa ng mga operasyon SQL ng dokumento copia.sql

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

MySQL Data Dumper

Kahit na ang mga nakaraang operasyon ay magiging sapat, ito ay napaka-pangkaraniwan na gamitin MySQL Data Dumper, na halos isang pamantayan para sa pagganap nito bagaman hindi ito bahagi ng mga base tool na kasama sa MySQL

Ang mga sumusunod ay ang mga opsyon ng mydumper karamihan ay ginagamit na, lohikal, ay dapat na nakasulat bilang bahagi ng parehong utos, na pinaghihiwalay ng mga puwang, bagaman sa tekstong ito sila ay pinaghiwalay sa mga linya upang mapadali ang pagbabasa:

--host polaridad.es Ang “polaridad.es” ay ang pangalan ng database server
--port 3306 Ang "3306" ay ang port number kung saan nakikinig ang server (bilang default, ito ay 3306)
--user pelaez Ang "pelaez" ay ang pangalan ng gumagamit kung kanino na-access ang database
--password 1234 Ang "1234" ay ang password ng user kung kanino na-access ang database
--database temperaturas Ang "temperatura" ay ang pangalan ng database na bina-back up
--no-locks huwag i-lock ang database sa panahon ng kopya (sa pamamagitan ng default ito ay nagla-lock)
--build-empty-files kopyahin din ang mga bakanteng mesa
--compress-input compress input
--compress i-compress ang output (ang resultang backup)

Upang ibalik ang backup na nakuha gamit ang mydumper ginamit na myloader na pangunahing ginagamit sa mga sumusunod na opsyon, na dapat isama sa parehong pagkakasunud-sunod na pinaghihiwalay ng mga puwang:

--host polaridad.es Ang “polaridad.es” ay ang pangalan ng database server
--port 3306 Ang "3306" ay ang port number kung saan nakikinig ang server (bilang default, ito ay 3306)
--user pelaez Ang "pelaez" ay ang pangalan ng gumagamit kung kanino na-access ang database
--password 1234 Ang "1234" ay ang password ng user kung kanino na-access ang database
--directory=copia_iot Ang «iot_copy» ay ang folder kung saan matatagpuan ang kopyang nabuo mydumper
--overwrite-tables i-overwrite ang mga talahanayan kahit na mayroon na sila
--verbose 3 Ang "3" ay ang antas ng impormasyon ng proseso (mas mataas, mas maraming mensahe)
-C gumamit ng compression sa stream ng data

Ang susunod (at huling) artikulo sa seryeng ito ay nagpapaliwanag kung paano gamitin ang PHP programming language upang iimbak ang impormasyong nakuha ng mga device na konektado sa Internet of Things sa mga database na pinag-usapan sa tekstong ito.

Maaaring Na-miss Mo