Valmistage ette MySQL või MariaDB andmebaas

Valmistage ette MySQL või MariaDB andmebaas

Valmistage ette MySQL või MariaDB andmebaas

IoT veebiserverHTTP POST IoT veebiserverMySQL andmebaas. IoT veebiserverPHP keele IoT veebiserver

Konfigureerige andmebaasiserver

Kui teenuste komplekt on installitud LAMP, WAMP, MAMP o XAMPP Nagu on selgitatud sarja esimeses artiklis või lihtsalt pärast installimist masinasse, mis toimib serverina vastavaid teenuseid rakendavate rakenduste summa, on vaja kohandada mõnda andmebaasiserveri konfiguratsiooni aspekti. MySQL samuti andmebaaside ja tabelite loomine, mida kasutatakse veebiserveris asjade Interneti seadmete andmete salvestamiseks.

Kui kasutatakse avalikku serverit, on teenusepakkuja kindlasti loonud teatud tüüpi paneeli, mis vahendab kasutajat ja andmebaasi "päris" konfiguratsiooni, et tugevdada töö turvalisust. Kui jah, siis peate järgima selle teenusepakkuja pakutavaid juhiseid. Reaalse või virtuaalse serveri puhul, mida majutatakse kolmanda osapoole rajatistes, võib ilmneda võrreldav asjaolu, kui teenusepakkuja seda haldab; Kui leping on sõlmitud mittehallatava serveriga (pakkuja poolt, kasutaja hallatud), kehtib järgmine teave.

Kuna oluline on teada juhiseid, mida andmebaasihaldurile tuleb anda ja on arusaadav, et seda kasutatakse asjade interneti seadmete toetamiseks, mis oleksid projekti objektiks, võib konsooli kasutamiseks piisab, kuna andmebaasiserveriga töötamine on aeg-ajalt. Kui haldustöökoormus hakkab suurenema, võib olla seda väärt, sest mugavam on kasutada haldurit serveris endas, näiteks populaarset phpMyAdmin (veebibrauserist) või lokaalselt, kuigi loomulikult pääseb juurde andmebaasiserverile, administraatoriga nagu MySQL töölaud millest edasijõudnute GUI toimingud, mida hakatakse selgitama, ja paljud teised, mis on väljaspool seda artiklit ja mis väärivad tervet sarja.

MySQL Workbenchi administraatoripaneel

Lisaks enam-vähem automaatsed toimingud, millega saab teha MySQL töölaud serveris, andmebaasides või tabelites on võimalik ülesandeid täita ka "käsitsi", kirjutades ja täites täielikke skripte või iseseisvaid käske SQL. Sama mis tööriistaga MySQL töölaud, SQL nõuab eraldi peatükki ja mille süvitsi teadasaamine on hädavajalik, kui IoT veebitöö osa nõuab tõsisemat tähelepanu backend kui siin on selgitatud.

MySQL Workbench SQL päringu redaktor

Igal juhul ja loomulikult töödeldava IoT andmebaasi vajaliku konfiguratsiooni lahendamiseks saab konsooli kasutada.

Seadistage root, peamine MySQL-i administraator

Kui andmebaasiserver on oma masinas, tuleb kõigepealt konfigureerida teenuse administraatori õigused, et saaksime neid õigusi kasutades luua teisi kasutajaid (kellel need omakorda võivad olla) ning vajaduse korral andmebaase ja tabeleid kuhu salvestada asjade interneti süsteemile vajalik teave.

Oluline on jälgida teenuste komplekti või serveri installiprotsessi MySQL, olenevalt järgnevast protsessist, kuna paljudel juhtudel vastutab selle ja teiste sammude läbiviimise eest paigaldaja ise ning neid pole vaja korrata, välja arvatud juhul, kui soovite konfiguratsiooni muuta.

Nende ülesannete täitmiseks töötate tavaliselt konsooliga. MySQL administraatorina. Sellele režiimile juurdepääsuks kasutage käsku mysql -u root -p o sudo mysql -u root kui seda kasutatakse esmakordselt ja installimise ajal pole kasutajat konfigureeritud root

MySQL-i juurkasutaja seadistamine konsoolist

Ordu sisse mysql -u root -p märgitud valikuga -u kasutajanimi (root) ja valikuga -p (parool), et konsooli sisenemisel tuleb võtit küsida MySQL. Süsteemikonsooli naasmiseks võite kasutada käsku quit välja minema

Nagu ülaltoodud ekraanipildil näha, enne konsoolist lahkumist MySQL, et määrata kasutaja õigused root käsku on kasutatud:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
milles:

  • kõik privileegid on antud GRANT ALL PRIVILEGES
  • kõigis andmebaasides kõigis tabelites ON *.*
  • kasutajale root juurdepääsu serverit käivitavast masinast MySQL TO 'root'@'localhost'
  • kasutades paroolina 1234 IDENTIFIED BY '1234'
  • teiste kasutajate volitamise loaga WITH GRANT OPTION

Andmebaasi kaughaldamiseks tuleb vastavale kasutajale anda õigused teistest asukohtadest. Eelmises näites oli see lubatud root pääseb juurde masinast, milles andmebaasiserver töötab (localhost) koos 'root'@'localhost', kui seda kasutatakse 'root'@'%' Juurdepääs on lubatud igast masinast.

Kui teil on süsteemis administraatori õigused, saate kasutaja parooli taastada root de MySQL. Selleks on vaja teenus peatada (mysql o mysqld, olenevalt jaotusest), käivitage see ilma võtmeta, määrake uus võti root ja taaskäivitage see. Paroolita sisenedes on võimalik anda ka ülalkirjeldatud õigusi.

  • peatage teenus sudo /etc/init.d/mysql stop
  • käivitada MySQL ilma võtmeta ja avage konsool sudo mysqld_safe --skip-grant-tables &
  • juurdepääs kui «root» mysql -u root
  • muuda parool:
    • juurdepääs andmebaasile «mysql" USE mysql;
    • määrata "root» võti «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • rakendage uusi privileege: FLUSH PRIVILEGES;
    • välju konsoolist mysql ja naaske süsteemi: quit
  • taaskäivitage teenus sudo /etc/init.d/mysql restart

Andmebaasi kaugjuurdepääsu seadistamine

Turvakaalutlustel andmebaasihalduri esialgne konfiguratsioon MySQL ei võimalda kaugjuurdepääsu, selle muutmiseks on vaja konfiguratsioonidokumenti tavapäraselt redigeerida my.cnf, mida tavaliselt marsruudil leidub /etc/mysql.

Kui kasutatakse MariaDB, mis on nüüd "vabam" versioon MySQL, kindlasti my.cnf on link /etc/alternatives/my.cnf mis omakorda laadib konfiguratsiooni, kasutades !includedir, marsruudi dokumentidest /etc/mysql/mariadb.conf.d, ilmselt dokumendist 50-server.cnf

Ressurss, mida andmebaasiserver kasutab kaugpäringute mittejärgimiseks, koosneb ainult teatud asukohast tehtud päringute "kuulamisest". IP-aadress mida väljendatakse parameetri väärtusena bind-address (mis asendab klassika skip-networking) Kui aadress on 127.0.0.1 (localhost) võetakse arvesse ainult kohaliku masina taotlusi. Kui kommenteerida koos # või kui väärtus on 0.0.0.0, teenindame mis tahes aadressi. Välise juurdepääsu võimaldamiseks on kõige turvalisem märkida IP-aadress (mis võib olla avalik või privaatne) arvutist, kust sellele juurde pääsete, tavaliselt midagi sellist bind-address = 192.168.1.74. Teie puhul võib see seade toimida a tunnel (ümbersuunamine rakendusega SSH) või kõnnitee (koos core ip tabelid), et vältida serveri paljastamist väljaspool võrgu kontrollitud ala.

MySQL-i andmebaasi konfigureerimine faili my.cnf redigeerimise teel (mysql-is jne)

Ülaltoodud ekraanipildil näete, et seda on muudetud my.cnf koos konfiguratsiooniga MySQL tellimust kasutades sudo nano /etc/mysql/my.cnf. Kui töötate koos MariaDB Tavalise konfiguratsiooniga oleks järjekord umbes selline sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. Nagu eespool mainitud, kui administraatoriõigustega juurdepääs on olemas, a GUI kui MySQL töölaud regulaarseks andmebaasi haldamiseks.

Looge andmebaasid

Kui andmebaasiserver on konfigureeritud, saab luua andmebaase ja tabeleid, kuhu IoT andmeid salvestada. Selleks saate kasutada käske SQL konsoolist või GUI juhist.

Tellimus CREATE DATABASE temperaturas; loob “temperatuuride” andmebaasi Vigade vältimiseks saab kasutada vormi CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; mis looks andmebaasi “temperatuuri_andmebaas” ainult siis, kui seda praegu ei eksisteeri.

Looge tabelid

Kuna erinevates andmebaasides võib olla sama nimega tabeleid, saate ühele neist viidata, jättes selle nime ette andmebaasi oma ja eraldades mõlemad punktiga, näiteks base_datos.tabla Seda tähistust saab laiendada ka väljade nimedele base.tabla.campo

Kui tabeliga töötamisel (antud juhul selle loomisel) jäetakse andmebaasi nimi välja, siis loetakse, et viidatakse viimati valitud nimele. Konkreetse konkreetse valimiseks võite kasutada käsku USE ja märkige oma nimi USE base_datos_temperaturas;

Andmebaasides tabeleid luues lisatakse samas toimingus tavaliselt neid moodustavate väljade info (kuigi neid on võimalik ka hiljem muuta) Nagu andmebaasi puhul tehakse, saab tabelit luua ainult siis, kui klausli lisamist ei eksisteeri IF NOT EXISTS või vastupidi, kustutage tabel enne loomist ainult siis, kui see on olemas kasutades DROP TABLE IF EXISTS valor_temperaturas;

Tabelite või andmebaaside nimede lubamiseks, mis võivad käskude või protseduuridega vastuolus olla, saab nime ümbritsemiseks ja käskudes esinevate konfliktide või vigade vältimiseks kasutada tõmbeaktsentmärki, mida mõnikord nimetatakse ka pöördkomaks. SQL.

Määratlege väljad

Tabeli loomisel lisatavad väljad tähistatakse sulgudes ja nendes salvestatavate andmete tüübiga. Andmetüübid, mida tavaliselt kasutatakse andmebaasis asjade Internetiga ühendatud seadmete teabe salvestamiseks, on täisarvud (INT o BIGINT) kümnendkohad (DECIMAL, DOUBLE o FLOAT) ajast (DATE, TIME, DATETIME o TIMESTAMP) ja tekst (peamiselt VARCHAR kuigi selliseid on ka teisi TEXT kuid neid ei kasutata asjade Interneti jaoks) Andmetüübi järele ja sulgudes lisatakse andmete pikkus ja vajadusel vorming või täpsus.

Lisades AUTO_INCREMENT Välja definitsioon näitab andmebaasihaldurile, et kui muud ei ole märgitud, tuleb uue kirje loomisel automaatselt salvestada viimase väärtus pluss vastav juurdekasv (mis on tavaliselt 1). väljad, mida kasutatakse kirjete numbriliste indeksitena.

Kood NOT NULL näitab, et kirje väli ei saa olla tühi, see peab salvestama mingi väärtuse.

Kui kasutate DEFAULT Tabeli välja loomisel näidatakse seda MySQL välja vaikeväärtus tingimusel, et uue kirje lisamisel või muutmisel ei ole selgesõnaliselt märgitud muud väärtust. Sageli kasutatav vaikeväärtus, antud juhul asjade Interneti väärtuste jälgimiseks, on CURRENT_TIMESTAMP mis võimaldab uue kirje loomisel väljale praeguse aja automaatselt salvestada, nii et andmed tuvastatakse ajas automaatselt.

Andmebaasi jõudluse optimeerimiseks on mugav lisada tabeli väljade definitsiooni lõppu üks, mida kasutatakse indeksina koos klausliga PRIMARY KEY (ID) ID on indeksiks valitud väli.

Tabeli definitsiooni lõpus saate parameetri väärtuseks märkida andmebaasimootori, millega seda hallatakse ENGINE vorminguga ENGINE=InnoDB; olemine InnoDB antud juhul valitud mootor.

Looge SQL-i seansis andmebaase, tabeleid ja konfigureerige välju

Järgmises näites olev kood koondab minimaalse tabeliga andmebaasi loomiseks tellimused, sammud, mida tuleks teha.

Looge andmebaasidest varukoopiaid

Kui server on konfigureeritud ning andmebaas ja selle tabelid loodud, oleks kõik valmis IoT sõlmede poolt hangitud info salvestamiseks. Kuigi selle artiklisarja fookus ei hõlma hooldust, on üks oluline haldusprobleem, millega tuleb tegeleda: varukoopiad. Enamikelt juhtidelt, sealhulgas phpMyAdmin y MySQL töölaud, saab teha ja taastada varukoopiaid, kuid tavaline on lisada need skripti, mis need automatiseerib (ilmselt koos konfiguratsiooni ja paljude muude dokumentidega), nii et tööriista on mugavam kasutada MySQLDump, klient, mis on tavaliselt osa tavapärasest installist MySQL, või mõni alternatiiv nagu MySQL Data Dumper Mida tellimus sisaldab? mydumper koopia tegemiseks ja myloader selle taastamiseks

MySQLDump

Tellimuse vorming mysqldump See on väga lihtne, peate lihtsalt märkima kasutajanime user, Parool password ja andmebaas, mida soovite kopeerida või --all-databases kõigi andmebaaside varundamiseks nagu järgmises näites:

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

Eelmine näide genereerib dokumendi copia.sql mis sisaldab korraldusi SQL (st tekst), mis on vajalik kõigi andmebaaside taastamiseks. Tekstivormingus salvestades võtab koopia enda alla palju rohkem kui vaja, mistõttu on see tavaliselt ka tihendatud, et säästa ruumi seadmes, kuhu see salvestatakse.

Näidiskäsuga loodud varukoopia saab taastada, kui teave läks kaduma operatsioone käivitava alloleva käsu vea tõttu SQL dokumendi copia.sql

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

MySQL Data Dumper

Kuigi eelnevatest toimingutest piisaks, on selle kasutamine väga levinud MySQL Data Dumper, mis on selle jõudluse osas juba peaaegu standard, kuigi see ei kuulu komplekti kuuluvate põhitööriistade hulka MySQL

Järgmised on valikud mydumper enim kasutatud, mis loogiliselt tuleks kirjutada sama käsu osana, eraldatuna tühikutega, kuigi selles tekstis on need lugemise hõlbustamiseks jagatud ridadeks:

--host polaridad.es "polaridad.es" on andmebaasiserveri nimi
--port 3306 "3306" on pordi number, mida server kuulab (vaikimisi on see 3306)
--user pelaez "pelaez" on selle kasutaja nimi, kellega andmebaasi pääseb
--password 1234 "1234" on selle kasutaja parool, kellega andmebaasi pääseb
--database temperaturas Temperatuurid on varundatava andmebaasi nimi
--no-locks ära lukusta andmebaasi kopeerimise ajal (vaikimisi lukustub)
--build-empty-files kopeerida ka tühjad tabelid
--compress-input tihenda sisendit
--compress tihendage väljund (saadud varukoopia)

Rakenduse abil saadud varukoopia taastamiseks mydumper seda kasutatakse myloader mida kasutatakse peamiselt järgmiste suvanditega, mis peavad olema samas järjekorras ja eraldatud tühikutega:

--host polaridad.es "polaridad.es" on andmebaasiserveri nimi
--port 3306 "3306" on pordi number, mida server kuulab (vaikimisi on see 3306)
--user pelaez "pelaez" on selle kasutaja nimi, kellega andmebaasi pääseb
--password 1234 "1234" on selle kasutaja parool, kellega andmebaasi pääseb
--directory=copia_iot «iot_copy» on kaust, milles koos loodud koopia asub mydumper
--overwrite-tables tabelid üle kirjutada isegi siis, kui need on juba olemas
--verbose 3 "3" on protsessi teabe aste (kõrgem, rohkem sõnumeid)
-C kasutage andmevoos tihendamist

Selle sarja järgmine (ja viimane) artikkel selgitab kuidas kasutada PHP programmeerimiskeelt asjade internetti ühendatud seadmete poolt saadud info salvestamiseks andmebaasidesse millest on selles tekstis juttu olnud.

Postita kommentaar

Võib-olla jäite vahele