Valmistele MySQL- tai MariaDB-tietokanta

Valmistele MySQL- tai MariaDB-tietokanta

Valmistele MySQL- tai MariaDB-tietokanta

IoT-verkkopalvelinHTTP POST IoT -verkkopalvelinMySQL-tietokanta. IoT-verkkopalvelinPHP-kielinen IoT-verkkopalvelin

Määritä tietokantapalvelin

Kun palvelusarja on asennettu LAMP, WAMP, mamp o XAMPP Kuten sarjan ensimmäisessä artikkelissa selitettiin tai yksinkertaisesti sen jälkeen, kun koneeseen on asennettu palvelimena toimivien sovellusten summa, jotka toteuttavat vastaavat palvelut, on tarpeen säätää joitakin tietokantapalvelimen kokoonpanon näkökohtia. MySQL sekä luoda tietokannat ja taulukot, joita käytetään web-palvelimella tietojen tallentamiseen Internet of Things -laitteista.

Jos käytetään julkista palvelinta, palveluntarjoaja on varmasti järjestänyt jonkinlaisen paneelin välittääkseen käyttäjän ja tietokannan "todellisen" konfiguraation toiminnan turvallisuuden vahvistamiseksi. Jos näin on, sinun on katsottava tämän palveluntarjoajan antamia ohjeita. Kun kyseessä on todellinen tai virtuaalinen palvelin, jota isännöidään kolmannen osapuolen tiloissa, vastaava tilanne voi syntyä, kun palveluntarjoaja hallinnoi sitä; Jos ei-hallittava palvelin on solmittu (palveluntarjoajan toimesta, käyttäjän hallinnoimasta), seuraavat tiedot ovat voimassa.

Koska tärkeätä on tietää tietokannan hallintaan annettavat ohjeet ja ymmärretään, että sitä käytetään välineenä esineiden internetin laitteiden tukemiseen, jotka olisivat projektin kohteena, voi olla riittää käyttämään konsolia, koska itse tietokantapalvelimen työ on satunnaista. Jos hallinnan työmäärä alkaa kasvaa, voi olla sen arvoista, koska on kätevämpää käyttää palvelimella itse hallintaa, kuten suosittua phpMyAdmin (verkkoselaimesta) tai paikallisesti, vaikka tietysti päästään tietokantapalvelimeen, järjestelmänvalvojan, kuten esim MySQL-työpöytä josta suorittaa edistyneen GUI selostettavat toiminnot ja monet muut, jotka ovat tämän artikkelin ulkopuolella ja jotka ansaitsevat kokonaisen sarjan.

MySQL Workbenchin hallintapaneeli

Niiden enemmän tai vähemmän automaattisten toimintojen lisäksi, joilla voidaan tehdä MySQL-työpöytä palvelimella, tietokannoista tai taulukoista on mahdollista suorittaa tehtäviä myös "manuaalisesti" kirjoittamalla ja suorittamalla täydellisiä komentosarjoja tai itsenäisiä komentoja SQL. Sama kuin työkalun kanssa MySQL-työpöytä, SQL vaatii erillisen luvun ja joka on oleellista tietää perusteellisesti, kun IoT-verkkotyön tehtävään liittyy vakavampaa huomiota backend kuin tässä on selitetty.

MySQL Workbench SQL Query Editor

Konsolia voidaan joka tapauksessa käyttää, ja tietysti käsiteltävän IoT-tietokannan tarvittavan konfiguraation ratkaisemiseksi.

Määritä pääkäyttäjä, MySQL-järjestelmänvalvoja

Jos tietokantapalvelin on omassa koneessaan, on ensin määritettävä palvelun järjestelmänvalvojan oikeudet, jotta ne voivat luoda näitä oikeuksia käyttäen muita käyttäjiä (joilla puolestaan ​​voi olla ne) ja tarvittaessa tietokantoja ja taulukoita. johon tallennetaan esineiden internet -järjestelmän tarvitsemat tiedot.

On tärkeää huolehtia palvelujoukon tai palvelimen asennusprosessista MySQL, riippuen noudatettavasta prosessista, koska monissa tapauksissa asentaja on itse vastuussa tämän ja muiden vaiheiden suorittamisesta, eikä niitä tarvitse toistaa paitsi silloin, kun haluat muuttaa kokoonpanoa.

Suorittaaksesi nämä tehtävät, työskentelet yleensä konsolin kanssa. MySQL järjestelmänvalvojana. Pääset tähän tilaan käyttämällä komentoa mysql -u root -p o sudo mysql -u root jos sitä käytetään ensimmäistä kertaa ja asennuksen aikana, käyttäjää ei ole määritetty root

MySQL-pääkäyttäjän määrittäminen konsolista

Tilaukseen mysql -u root -p merkitty vaihtoehdolla -u Käyttäjänimi (root) ja vaihtoehdolla -p (salasana), jonka mukaan avain on pyydettävä konsolia käytettäessä MySQL. Voit palata järjestelmäkonsoliin käyttämällä komentoa quit mennä ulos

Kuten yllä olevasta kuvakaappauksesta näkyy, ennen kuin poistut konsolista MySQL, asettaaksesi käyttäjän oikeudet root komentoa on käytetty:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
jossa:

  • kaikki etuoikeudet myönnetään GRANT ALL PRIVILEGES
  • kaikissa taulukoissa kaikissa tietokannoissa ON *.*
  • käyttäjälle root pääsy koneelta, joka pyörittää palvelinta MySQL TO 'root'@'localhost'
  • käyttämällä salasanana 1234 IDENTIFIED BY '1234'
  • joilla on lupa valtuuttaa muita käyttäjiä WITH GRANT OPTION

Tietokannan etähallintaa varten vastaavalle käyttäjälle on myönnettävä oikeudet muista paikoista. Edellisessä esimerkissä se oli sallittua root käytetään koneelta, jolla tietokantapalvelin on käynnissä (localhost) kanssa 'root'@'localhost', jos käytetään 'root'@'%' Pääsy sallitaan miltä tahansa koneelta.

Jos sinulla on järjestelmänvalvojan oikeudet, voit määrittää käyttäjän salasanan uudelleen root de MySQL. Tätä varten palvelu on lopetettava (mysql o mysqld, jakelusta riippuen), käynnistä se ilman avainta, aseta uusi avain root ja käynnistä se uudelleen. Pääsyllä ilman salasanaa on myös mahdollista myöntää yllä kuvatut oikeudet.

  • lopeta palvelu sudo /etc/init.d/mysql stop
  • käynnistää MySQL ilman avainta ja avaa konsolin lukitus sudo mysqld_safe --skip-grant-tables &
  • pääsy nimellä «root» mysql -u root
  • vaihda salasana:
    • pääsy tietokantaan «mysql»: USE mysql;
    • kohdistaa «root» avain «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • käytä uusia oikeuksia: FLUSH PRIVILEGES;
    • poistu konsolista mysql ja palaa järjestelmään: quit
  • käynnistä palvelu uudelleen sudo /etc/init.d/mysql restart

Määritä tietokannan etäkäyttö

Turvallisuussyistä tietokannan hallintaohjelman alkukokoonpano MySQL ei salli etäkäyttöä, sen muuttamiseksi on tarpeen muokata asetusdokumenttia normaalisti my.cnf, joka löytyy yleensä reitiltä /etc/mysql.

Jos käytetään MariaDB, joka on nyt "vapaampi" versio MySQL, varmasti my.cnf tulee olemaan linkki /etc/alternatives/my.cnf joka puolestaan ​​lataa kokoonpanon käyttämällä !includedir, reittidokumenteista /etc/mysql/mariadb.conf.d, luultavasti asiakirjasta 50-server.cnf

Resurssi, jota tietokantapalvelin käyttää ollakseen käsittelemättä etäpyyntöjä, koostuu vain tietystä sijainnista tehtyjen pyyntöjen "kuuntelusta". IP-osoite joka ilmaistaan ​​parametrin arvona bind-address (joka korvaa klassikon skip-networking) Kun osoite on 127.0.0.1 (localhost) vain paikallisen koneen pyyntöihin vastataan. Jos kommentoi # tai jos arvo on 0.0.0.0, palvelemme mihin tahansa osoitteeseen. Ulkoisen pääsyn sallimiseksi turvallisinta on ilmoittaa IP-osoite (joka voi olla julkinen tai yksityinen) tietokoneesta, josta sitä käytetään, yleensä jotain sellaista bind-address = 192.168.1.74. Sinun tapauksessasi tämä laite voi toimia a tunneli (uudelleenohjaus kanssa SSH) tai kävelytienä (jossa ydin ip -taulukoita) välttääksesi palvelimen paljastamisen verkon valvotun alueen ulkopuolelle.

MySQL-tietokannan määritys muokkaamalla my.cnf-tiedostoa (mm. mysql:ssä)

Yllä olevasta kuvakaappauksesta näet, että sitä on muokattu my.cnf kokoonpanon kanssa MySQL tilausta käyttämällä sudo nano /etc/mysql/my.cnf. Kun kyseessä on kanssa MariaDB Tavallisella kokoonpanolla järjestys olisi jotain tällaista sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. Kuten edellä mainittiin, kun sinulla on pääsy järjestelmänvalvojan oikeuksin, a GUI kuten MySQL-työpöytä säännölliseen tietokannan hallintaan.

Luo tietokannat

Kun tietokantapalvelin on määritetty, voidaan luoda tietokannat ja taulukot, joihin IoT-tiedot tallennetaan. Voit tehdä tämän käyttämällä komentoja SQL konsolista tai GUI johtajasta.

Järjestys CREATE DATABASE temperaturas; luo "lämpötilatietokannan". Virheiden välttämiseksi voidaan käyttää lomaketta CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; joka loisi tietokannan "temperature_database" vain, jos sitä ei tällä hetkellä ole olemassa.

Luo taulukot

Koska eri tietokannoista voi olla samanniisiä taulukoita, voit viitata yhteen niistä kirjoittamalla sen nimen eteen tietokannan nimi ja erottamalla molemmat pisteellä, esim. base_datos.tabla Tämä merkintä voidaan laajentaa myös kenttien nimiin base.tabla.campo

Jos tietokannan nimi jätetään pois taulukkoa käytettäessä (tässä tapauksessa sitä luotaessa), katsotaan, että viimeksi valittuun viitataan. Jos haluat nimenomaisesti valita tietyn, voit käyttää komentoa USE ja ilmoita nimesi USE base_datos_temperaturas;

Tietokantoihin luotaessa taulukoita samassa toiminnossa yleensä lisätään niitä muodostavien kenttien tiedot (tosin niitä on myös mahdollista muuttaa myöhemmin) Kuten tietokannan kanssa tehdään, taulukko voidaan luoda vain, jos se tekee ei ole olemassa lausekkeen lisäämistä varten IF NOT EXISTS tai päinvastoin, muista poistaa taulukko ennen sen luomista vain, jos se on olemassa käyttämällä DROP TABLE IF EXISTS valor_temperaturas;

Jotta taulukoiden tai tietokantojen nimet voivat olla ristiriidassa komentojen tai toimintosarjan kanssa, voidaan käyttää syvää aksenttimerkkiä, jota joskus kutsutaan käänteiseksi pilkuksi, ympäröimään nimi ja välttämään ristiriidat tai virheet komentoissa. SQL.

Määritä kentät

Taulukkoa luotaessa lisätyt kentät ilmoitetaan sulkemalla ne ja osoittamalla niiden tallennettavan tiedon tyypin. Tietotyypit, joita tyypillisesti käytetään tietokannassa esineiden Internetiin liitetyistä laitteista olevien tietojen tallentamiseen, ovat kokonaislukuja (INT o BIGINT) desimaalit (DECIMAL, DOUBLE o FLOAT) ajasta (DATE, TIME, DATETIME o TIMESTAMP) ja tekstiä (lähinnä VARCHAR vaikka sellaisia ​​on muitakin TEXT mutta niitä ei käytetä IoT:ssä) Tietotyypin jälkeen ja suluissa lisätään datan pituus ja tarvittaessa muoto tai tarkkuus.

Lisäämällä AUTO_INCREMENT Kentän määrittely osoittaa tietokannan hallintaohjelmalle, että jos muuta ei ole ilmoitettu, uutta tietuetta luotaessa tulee automaattisesti tallentaa viimeisen tietueen arvo plus sitä vastaava lisäys (joka on normaalisti 1). kentät, joita käytetään tietueiden numeerisina indekseinä.

Koodi NOT NULL ilmaisee, että tietueen kenttä ei voi olla tyhjä, sen on tallennettava jokin arvo.

Kun käytät DEFAULT Kun luot taulukon kenttää, se ilmoitetaan MySQL kentän oletusarvo edellyttäen, että uutta tietuetta lisättäessä tai sitä muuttaessa ei nimenomaisesti ilmoiteta toista arvoa. Usein käytetty oletusarvo, tässä tapauksessa IoT-arvojen seuraamiseen, on CURRENT_TIMESTAMP jonka avulla voit automaattisesti tallentaa nykyisen ajan kenttään uutta tietuetta luotaessa, jolloin tiedot tunnistetaan automaattisesti ajoissa.

Tietokannan suorituskyvyn optimoimiseksi on kätevää sisällyttää taulukon kenttien määritelmän loppuun yksi, jota käytetään indeksinä lausekkeen kanssa. PRIMARY KEY (ID) ID on hakemistoksi valittu kenttä.

Taulukon määritelmän lopussa voit ilmoittaa parametriarvoksi tietokantakoneen, jolla sitä hallitaan ENGINE muodossa ENGINE=InnoDB; ollessa InnoDB tässä tapauksessa valittu moottori.

Luo tietokantoja, taulukoita ja määritä kenttiä SQL-istunnossa

Seuraavan esimerkin koodi kokoaa yhteen tilaukset, vaiheet, jotka olisi suoritettava vähimmäistaulukon sisältävän tietokannan luomiseksi.

Luo tietokannoista varmuuskopioita

Kun palvelin on konfiguroitu ja tietokanta ja sen taulukot luotu, kaikki olisi valmis tallentamaan IoT-solmujen saamat tiedot. Vaikka tämän artikkelisarjan painopiste ei sisällä ylläpitoa, on yksi tärkeä hallinnollinen ongelma, johon on tärkeää puuttua: varmuuskopiointi. Useimmilta esimiehiltä, ​​mukaan lukien phpMyAdmin y MySQL-työpöytä, varmuuskopioita voidaan tehdä ja palauttaa, mutta on yleistä sisällyttää ne skriptiin, joka automatisoi ne (luultavasti asetusten ja monien muiden asiakirjojen kanssa), joten työkalun käyttö on helpompaa. MySQLDump, asiakas, joka on yleensä osa tavanomaista asennusta MySQL, tai joku muu vaihtoehto MySQL Data Dumper Mitä tilaus sisältää? mydumper kopioidaksesi ja myloader sen palauttamiseksi

MySQLDump

Tilauksen muoto mysqldump Se on hyvin yksinkertaista, sinun tarvitsee vain ilmoittaa käyttäjätunnus user, Salasana password ja tietokanta, jonka haluat kopioida tai --all-databases varmuuskopioida kaikki tietokannat seuraavan esimerkin mukaisesti:

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

Edellinen esimerkki luo asiakirjan copia.sql joka sisältää tilaukset SQL (eli tekstiä) tarvitaan kaikkien tietokantojen uudelleen rakentamiseen. Tekstimuotoon tallennettuna kopio vie paljon enemmän kuin on tarpeen, minkä vuoksi se yleensä myös pakataan tilan säästämiseksi laitteessa, johon se on tallennettu.

Esimerkkikomennolla luotu varmuuskopio voidaan palauttaa, jos tiedot katosivat alla olevan toiminnot suorittavan komennon virheen vuoksi SQL asiakirjan copia.sql

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

MySQL Data Dumper

Vaikka aikaisemmat toiminnot riittäisivät, on se hyvin yleinen käyttö MySQL Data Dumper, lähes standardi sen suorituskyvystä, vaikka se ei ole osa mukana toimitettuja perustyökaluja MySQL

Seuraavat ovat vaihtoehdot mydumper useimmiten käytetyt, jotka loogisesti pitäisi kirjoittaa osana samaa komentoa välilyönnillä erotettuina, vaikka tässä tekstissä ne on erotettu riveiksi lukemisen helpottamiseksi:

--host polaridad.es "polaridad.es" on tietokantapalvelimen nimi
--port 3306 "3306" on portin numero, jota palvelin kuuntelee (oletusarvoisesti se on 3306)
--user pelaez "pelaez" on sen käyttäjän nimi, jonka kanssa tietokantaa käytetään
--password 1234 "1234" on sen käyttäjän salasana, jolla tietokantaan käytetään
--database temperaturas "lämpötilat" on varmuuskopioitavan tietokannan nimi
--no-locks älä lukitse tietokantaa kopioinnin aikana (oletusarvoisesti se lukittuu)
--build-empty-files kopioi myös tyhjät taulukot
--compress-input pakkaa sisääntuloa
--compress pakkaa tulos (tuloksena oleva varmuuskopio)

Palauta komennolla saatu varmuuskopio mydumper sitä käytetään myloader jota käytetään ensisijaisesti seuraavien vaihtoehtojen kanssa, jotka on sisällytettävä samaan järjestykseen välilyönneillä erotettuina:

--host polaridad.es "polaridad.es" on tietokantapalvelimen nimi
--port 3306 "3306" on portin numero, jota palvelin kuuntelee (oletusarvoisesti se on 3306)
--user pelaez "pelaez" on sen käyttäjän nimi, jonka kanssa tietokantaa käytetään
--password 1234 "1234" on sen käyttäjän salasana, jolla tietokantaan käytetään
--directory=copia_iot «iot_copy» on kansio, jossa sovelluksella luotu kopio sijaitsee mydumper
--overwrite-tables Korvaa taulukot, vaikka ne olisi jo olemassa
--verbose 3 "3" on prosessin informaatioaste (korkeampi, enemmän viestejä)
-C käytä pakkausta tietovirrassa

Tämän sarjan seuraava (ja viimeinen) artikkeli selittää kuinka käyttää PHP-ohjelmointikieltä tallentamaan esineiden Internetiin kytkettyjen laitteiden saamia tietoja tietokantoihin joista tässä tekstissä on puhuttu.

Post Comment

Olet ehkä missannut