Förbered MySQL- eller MariaDB-databasen

Förbered MySQL- eller MariaDB-databasen

Förbered MySQL- eller MariaDB-databasen

IoT webbserverHTTP POST IoT webbserverMySQL-databas. IoT webbserverPHP-språk IoT-webbserver

Konfigurera databasservern

När uppsättningen tjänster är installerad LAMPA, WAMP, MAMP o XAMPP Som förklaras i den första artikeln i serien eller helt enkelt efter installation på maskinen som kommer att fungera som en server summan av applikationer som implementerar motsvarande tjänster, är det nödvändigt att justera vissa aspekter av databasserverns konfiguration MySQL samt skapa de databaser och tabeller som kommer att användas på webbservern för att lagra data från Internet of Things-enheter.

Om en offentlig server används kommer leverantören säkert att ha tillhandahållit någon typ av panel för att förmedla mellan användaren och den "riktiga" konfigurationen av databasen för att förstärka säkerheten i verksamheten. Om så är fallet måste du hänvisa till instruktionerna som denna leverantör erbjuder. I fallet med en verklig eller virtuell server som är värd hos en tredje part, kan en jämförbar omständighet uppstå när leverantören hanterar den; Om en icke-hanterad server har kontrakterats (av leverantören, hanterad av användaren), kommer följande information att gälla.

Eftersom det viktiga är att känna till instruktionerna som måste ges till databashanteraren och det är underförstått att det används som ett sätt att stödja enheter för Internet of Things, som skulle vara föremålet för projektet, kan det vara tillräckligt för att använda konsolen eftersom arbetet på själva databasservern kommer att vara tillfälligt. Om hanteringsbelastningen börjar öka kan det vara värt det, eftersom det är bekvämare, att använda en chef på själva servern, som den populära phpMyAdmin (från en webbläsare) eller lokalt, även om man givetvis kommer åt databasservern, med en administratör som t.ex mysql arbetsbänk varifrån man kan utföra i en avancerad GUI operationerna som kommer att förklaras och många andra som ligger utanför denna artikel och som förtjänar en hel serie.

MySQL Workbench Admin Panel

Förutom de mer eller mindre automatiska operationerna som kan göras med mysql arbetsbänk på servern, databaserna eller tabellerna är det också möjligt att utföra uppgifter "manuellt" genom att skriva och utföra kompletta skript eller oberoende kommandon i SQL. Samma som med verktyget mysql arbetsbänk, SQL kräver ett separat kapitel och som kommer att vara väsentligt att känna till på djupet när den del av IoT-webbarbetet som utförs innebär mer seriös uppmärksamhet på backend än vad som förklaras här.

MySQL Workbench SQL Query Editor

I vilket fall som helst, och naturligtvis för att lösa den nödvändiga konfigurationen av IoT-databasen som bearbetas, kan konsolen användas.

Konfigurera root, den huvudsakliga MySQL-administratören

Om databasservern är på sin egen maskin är det första du ska göra att konfigurera tjänstadministratörsbehörigheterna för att kunna skapa, med hjälp av dessa privilegier, andra användare (som i sin tur kan ha dem) och, om tillämpligt, databaserna och tabellerna för att lagra informationen som Internet of Things-systemet behöver.

Det är viktigt att ta hand om installationsprocessen för uppsättningen tjänster eller servern MySQL, beroende på processen som följs, eftersom i många fall installatören själv kommer att ansvara för att utföra detta steg och andra och det kommer inte att vara nödvändigt att upprepa dem förutom när du vill ändra konfigurationen.

För att utföra dessa uppgifter arbetar du vanligtvis med konsolen. MySQL som administratör. För att komma åt detta läge, använd kommandot mysql -u root -p o sudo mysql -u root Om den används för första gången och under installationen har användaren inte konfigurerats root

Konfigurera MySQL root-användare från konsolen

In till Orden mysql -u root -p anges med alternativet -u användarnamnet (root) och med alternativet -p (lösenord) att nyckeln måste begäras vid åtkomst till konsolen MySQL. För att återgå till systemkonsolen kan du använda kommandot quit att gå ut

Som framgår av skärmdumpen ovan, innan du lämnar konsolen MySQL, för att ställa in användarens privilegier root kommandot har använts:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
i vilken:

  • alla privilegier beviljas GRANT ALL PRIVILEGES
  • i alla tabeller i alla databaser ON *.*
  • till användaren root åtkomst från maskinen som kör servern MySQL TO 'root'@'localhost'
  • använder 1234 som lösenord IDENTIFIED BY '1234'
  • med tillstånd att auktorisera andra användare WITH GRANT OPTION

För att kunna hantera databasen på distans måste behörigheter ges till motsvarande användare från andra platser. I föregående exempel var det tillåtet root nås från den maskin på vilken databasservern körs (localhost) med 'root'@'localhost', om den används 'root'@'%' Åtkomst kommer att tillåtas från vilken maskin som helst.

Om du har administratörsbehörighet på systemet kan du återupprätta användarlösenordet root de MySQL. För att göra det är det nödvändigt att stoppa tjänsten (mysql o mysqld, beroende på distributionen), starta den utan nyckel, ställ in den nya nyckeln root och starta om den. Genom att komma åt utan lösenord är det också möjligt att bevilja de privilegier som beskrivs ovan.

  • stoppa tjänsten sudo /etc/init.d/mysql stop
  • lansering MySQL utan nyckel och lås upp konsolen sudo mysqld_safe --skip-grant-tables &
  • åtkomst som «root» mysql -u root
  • ändra lösenordet:
    • komma åt databasen «mysql»: USE mysql;
    • tilldela till "root» nyckeln «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • tillämpa de nya privilegierna: FLUSH PRIVILEGES;
    • avsluta konsolen mysql och återgå till systemet: quit
  • starta om tjänsten sudo /etc/init.d/mysql restart

Konfigurera fjärrdatabasåtkomst

Av säkerhetsskäl, den initiala konfigurationen av databashanteraren MySQL tillåter inte fjärråtkomst, för att ändra det är det nödvändigt att redigera konfigurationsdokumentet, normalt my.cnf, som vanligtvis finns på rutten /etc/mysql.

Om den används mariadb, som nu är den "friare" versionen av MySQL, säkert my.cnf kommer att vara en länk till /etc/alternatives/my.cnf som i sin tur laddar konfigurationen med hjälp av !includedir, från ruttdokumenten /etc/mysql/mariadb.conf.d, förmodligen från dokumentet 50-server.cnf

Resursen som databasservern använder för att inte sköta fjärrförfrågningar består av att bara "lyssna" på förfrågningar från en viss plats. IP-adress som uttrycks som parameterns värde bind-address (som ersätter den klassiska skip-networking) När adressen är 127.0.0.1 (localhost) endast förfrågningar från den lokala maskinen behandlas. Om kommenteras med # eller om värdet är 0.0.0.0, vi betjänar vilken adress som helst. För att tillåta extern åtkomst är det säkraste att ange IP-adress (vilket kan vara offentligt eller privat) på datorn den nås från, vanligtvis något liknande bind-address = 192.168.1.74. I ditt fall kan denna utrustning fungera som en tunnel (omdirigerar med SSH) eller som en gångväg (med kärna ip-tabeller) för att undvika att exponera servern utanför ett kontrollerat område av nätverket.

MySQL-databaskonfiguration genom att redigera filen my.cnf (i etc mysql)

I skärmdumpen ovan kan du se att den har redigerats my.cnf med konfigurationen MySQL använder beställningen sudo nano /etc/mysql/my.cnf. När det gäller att arbeta med mariadb Med den vanliga konfigurationen skulle beställningen vara ungefär sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. Som nämnts ovan, när det väl finns åtkomst med administrativa privilegier, a GUI som mysql arbetsbänk för regelbunden databashantering.

Skapa databaserna

När databasservern är konfigurerad kan databaserna och tabellerna där IoT-data lagras skapas. För att göra detta kan du använda kommandon SQL från konsolen eller från GUI av en chef.

Ordningen CREATE DATABASE temperaturas; skapar databasen "temperaturer" För att undvika fel kan formuläret användas CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; vilket skulle skapa databasen "temperature_database" endast om den inte finns för närvarande.

Skapa tabellerna

Eftersom det i olika databaser kan finnas tabeller med samma namn, kan du referera till en av dem genom att föregå dess namn med databasens namn och separera båda med en punkt, ungefär som base_datos.tabla Denna notation kan även utökas till namnen på fälten base.tabla.campo

Om databasnamnet utelämnas när man använder en tabell (i det här fallet när man skapar den) anses den senast valda hänvisas till. För att uttryckligen välja en specifik kan du använda kommandot USE och ange ditt namn USE base_datos_temperaturas;

När man skapar tabeller i databaser, i samma operation, läggs vanligtvis informationen till fälten som bildar dem till (även om det också går att ändra dem senare) Som man gör med databasen kan tabellen skapas endast om den gör det. existerar inte att lägga till klausulen IF NOT EXISTS eller tvärtom, se till att ta bort tabellen innan du skapar den endast om den finns med DROP TABLE IF EXISTS valor_temperaturas;

För att tillåta namn på tabeller eller databaser som kan komma i konflikt med kommandon eller procedurer, kan det grava accenttecknet, ibland kallat ett inverterat kommatecken, användas för att omge namnet och undvika konflikter eller fel i kommandona. SQL.

Definiera fälten

Fälten som läggs till när tabellen skapas indikeras genom att omsluta dem inom parentes och ange vilken typ av data de lagrar. De datatyper som vanligtvis används i en databas för att lagra information från enheter anslutna till Internet of Things är heltal (INT o BIGINT) decimaler (DECIMAL, DOUBLE o FLOAT) av tid (DATE, TIME, DATETIME o TIMESTAMP) och text (främst VARCHAR även om det finns andra som TEXT men de används inte för IoT) Efter datatypen, och inom parentes, läggs datalängden och, i förekommande fall, formatet eller precisionen till.

Genom att lägga till AUTO_INCREMENT Definitionen av ett fält indikerar för databashanteraren att, om inget annat anges, när man skapar en ny post måste värdet av den sista plus motsvarande ökning automatiskt lagras (vilket normalt är 1). Det ingår vanligtvis i fält som används som numeriska index för posterna.

Koden NOT NULL indikerar att ett fält i en post inte kan vara tomt, det måste lagra något värde.

När du använder DEFAULT När du skapar ett fält i en tabell indikeras det MySQL ett standardvärde för fältet förutsatt att ett annat värde inte uttryckligen anges när en ny post läggs till eller ändras. Ett ofta använt standardvärde, i detta fall för att övervaka IoT-värden, är CURRENT_TIMESTAMP som gör att du automatiskt kan registrera den aktuella tiden i ett fält när du skapar en ny post, så att data automatiskt identifieras i tid.

För att optimera databasens prestanda är det praktiskt att i slutet av definitionen av tabellfälten inkludera ett som används som ett index med klausulen PRIMARY KEY (ID) ID är det fält som valts som index.

I slutet av definitionen av en tabell kan du ange vilken databasmotor som den hanteras med som parametervärde ENGINE med formatet ENGINE=InnoDB; vara InnoDB motorn som valts i detta fall.

Skapa databaser, tabeller och konfigurera fält i en SQL-session

Koden i följande exempel samlar beställningarna, de steg som skulle behöva vidtas för att skapa en databas med en minimitabell.

Skapa säkerhetskopior av databaser

När servern är konfigurerad och databasen och dess tabeller har skapats, skulle allt vara redo att lagra informationen som erhålls av IoT-noderna. Även om fokus för denna artikelserie inte inkluderar underhåll, finns det en viktig administrativ fråga som är viktig att ta itu med: säkerhetskopiering. Från de flesta chefer, inklusive phpMyAdmin y mysql arbetsbänk, säkerhetskopior kan göras och återställas men det är vanligt att inkludera dem i ett skript som automatiserar dem (förmodligen tillsammans med konfigurationen och många andra dokument) så det är bekvämare att använda verktyget MySQLDump, en klient som vanligtvis ingår i en konventionell installation av MySQL, eller något alternativ som MySQL Data Dumper Vad innehåller beställningen? mydumper att göra kopian och myloader för att återställa den

MySQLDump

Beställningsformatet mysqldump Det är väldigt enkelt, du behöver bara ange användarnamnet user, Lösenord password och databasen du vill kopiera eller --all-databases för att säkerhetskopiera alla databaser som i följande exempel:

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

Det föregående exemplet genererar dokumentet copia.sql som innehåller beställningarna SQL (dvs text) som behövs för att bygga om alla databaser. När den sparas i textformat tar kopian upp mycket mer än nödvändigt, varför den också vanligtvis komprimeras för att spara utrymme på enheten som den är lagrad på.

Säkerhetskopieringen som genererades med exempelkommandot skulle kunna återställas om informationen gick förlorad på grund av ett fel med kommandot nedan som utför operationerna SQL av dokumentet copia.sql

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

MySQL Data Dumper

Även om de tidigare operationerna skulle vara tillräckliga, är det mycket vanligt att använda MySQL Data Dumper, redan nästan en standard för dess prestanda även om det inte är en del av basverktygen som ingår i MySQL

Följande är alternativen för mydumper mest använda som logiskt sett ska skrivas som en del av samma kommando, separerade med mellanslag, även om de i den här texten har separerats i rader för att underlätta läsningen:

--host polaridad.es "polaridad.es" är namnet på databasservern
--port 3306 "3306" är portnumret som servern lyssnar på (som standard är det 3306)
--user pelaez "pelaez" är namnet på användaren med vilken databasen nås
--password 1234 "1234" är lösenordet för den användare med vilken databasen nås
--database temperaturas "temperaturer" är namnet på databasen som säkerhetskopieras
--no-locks lås inte databasen under kopieringen (som standard låser den)
--build-empty-files kopiera även tomma tabeller
--compress-input komprimera ingången
--compress komprimera utdata (den resulterande säkerhetskopian)

För att återställa säkerhetskopian som erhållits med mydumper den används myloader som främst används med följande alternativ, som måste inkluderas i samma ordning separerade med mellanslag:

--host polaridad.es "polaridad.es" är namnet på databasservern
--port 3306 "3306" är portnumret som servern lyssnar på (som standard är det 3306)
--user pelaez "pelaez" är namnet på användaren med vilken databasen nås
--password 1234 "1234" är lösenordet för den användare med vilken databasen nås
--directory=copia_iot «iot_copy» är mappen där kopian som genereras med finns mydumper
--overwrite-tables skriva över tabeller även om de redan finns
--verbose 3 "3" är graden av information om processen (högre, fler meddelanden)
-C använd komprimering på dataströmmen

Nästa (och sista) artikel i den här serien förklarar hur man använder programmeringsspråket PHP för att lagra information som erhålls av enheter anslutna till Internet of Things i databaser som har talats om i denna text.

Post kommentar

Du kanske har missat