Forbered MySQL- eller MariaDB-databasen
Konfigurer databaseserveren
Når settet med tjenester er installert LAMP, WAMP, MAMP o XAMPP Som forklart i den første artikkelen i serien eller ganske enkelt etter installasjon på maskinen som vil fungere som en server summen av applikasjoner som implementerer de tilsvarende tjenestene, er det nødvendig å justere noen aspekter av databaseserverkonfigurasjonen MySQL samt å lage databasene og tabellene som skal brukes på webserveren for å lagre data fra tingenes Internett-enheter.
Hvis en offentlig server brukes, vil leverandøren helt sikkert ha levert en type panel for å formidle mellom brukeren og den "virkelige" konfigurasjonen av databasen for å forsterke sikkerheten i operasjonen. I så fall må du se instruksjonene som denne leverandøren tilbyr. Når det gjelder en ekte eller virtuell server som er vert i fasilitetene til en tredjepart, kan en tilsvarende omstendighet oppstå når leverandøren administrerer den; Hvis en ikke-administrert server er inngått kontrakt (av leverandøren, administrert av brukeren), vil følgende informasjon gjelde.
Siden det viktige er å kjenne til instruksjonene som må gis til databasebehandleren, og det er forstått at det brukes som et middel til å støtte enheter for tingenes internett, som vil være objektet for prosjektet, kan det være nok til å bruke konsollen siden arbeidet på selve databaseserveren vil være sporadisk. Hvis ledelsesarbeidsmengden begynner å øke, kan det være verdt det, fordi det er mer praktisk, å bruke en leder på selve serveren, for eksempel den populære phpMyAdmin (fra en nettleser) eller lokalt, men selvfølgelig tilgang til databaseserveren, med en administrator som f.eks MySQL arbeidsbenk hvorfra å utføre i en avansert GUI operasjonene som skal forklares og mange andre som er utenfor denne artikkelen og som fortjener en hel serie.
I tillegg til de mer eller mindre automatiske operasjonene som kan gjøres med MySQL arbeidsbenk på serveren, databaser eller tabeller er det også mulig å utføre oppgaver "manuelt" ved å skrive og utføre komplette skript eller uavhengige kommandoer i SQL. Samme som med verktøyet MySQL arbeidsbenk, SQL krever et eget kapittel og som vil være vesentlig å kjenne til i dybden når den delen av IoT-nettarbeidet som utføres innebærer mer seriøs oppmerksomhet til backend enn det som er forklart her.
I alle fall, og selvfølgelig for å løse den nødvendige konfigurasjonen av IoT-databasen som behandles, kan konsollen brukes.
Konfigurer root, den viktigste MySQL-administratoren
Hvis databaseserveren er på sin egen maskin, er den første tingen å gjøre å konfigurere tjenesteadministratortillatelsene til å kunne opprette, ved å bruke disse privilegiene, andre brukere (som igjen kan ha dem) og, hvis aktuelt, databasene og tabellene for å lagre informasjonen som Internet of Things-systemet trenger.
Det er viktig å ivareta installasjonsprosessen av settet med tjenester eller serveren MySQL, avhengig av prosessen som følges, siden i mange tilfeller vil installatøren selv være ansvarlig for å utføre dette trinnet og andre, og det vil ikke være nødvendig å gjenta dem unntatt når du vil endre konfigurasjonen.
For å utføre disse oppgavene jobber du vanligvis med konsollen. MySQL som administrator. For å få tilgang til denne modusen, bruk kommandoen mysql -u root -p
o sudo mysql -u root
hvis den brukes for første gang og under installasjonen, er brukeren ikke konfigurert root
Inn til ordenen mysql -u root -p
angitt med alternativet -u
brukernavnet (root
) og med alternativet -p
(passord) at nøkkelen må bes om når du får tilgang til konsollen MySQL. For å gå tilbake til systemkonsollen kan du bruke kommandoen quit
å gå ut
Som vist på skjermbildet ovenfor, før du forlater konsollen MySQL, for å angi brukerens rettigheter root
kommandoen er brukt:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
der:
- alle privilegier er gitt
GRANT ALL PRIVILEGES
- i alle tabeller i alle databaser
ON *.*
- til brukeren
root
tilgang fra maskinen som kjører serveren MySQLTO 'root'@'localhost'
- bruker 1234 som passord
IDENTIFIED BY '1234'
- med tillatelse til å autorisere andre brukere
WITH GRANT OPTION
For å administrere databasen eksternt, må privilegier gis til den tilsvarende brukeren fra andre lokasjoner. I forrige eksempel var det tillatt root
tilgang fra maskinen som databaseserveren kjører på (localhost
) med 'root'@'localhost'
, hvis brukt 'root'@'%'
Tilgang vil bli tillatt fra hvilken som helst maskin.
Hvis du har administratorrettigheter på systemet, kan du reetablere brukerpassordet root
de MySQL. For å gjøre det, er det nødvendig å stoppe tjenesten (mysql
o mysqld
, avhengig av distribusjonen), start opp uten nøkkel, sett den nye nøkkelen root
og start den på nytt. Ved å gå inn uten passord er det også mulig å gi rettighetene beskrevet ovenfor.
- stoppe tjenesten
sudo /etc/init.d/mysql stop
- lanseringen MySQL uten nøkkel og lås opp konsollen
sudo mysqld_safe --skip-grant-tables &
- tilgang som «
root
»mysql -u root
- endre passordet:
- få tilgang til databasen «
mysql
'USE mysql;
- tilordne til «
root
» nøkkelen «1234»:UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
- bruk de nye rettighetene:
FLUSH PRIVILEGES;
- gå ut av konsollen
mysql
og gå tilbake til systemet:quit
- få tilgang til databasen «
-
start tjenesten på nytt
sudo /etc/init.d/mysql restart
Konfigurer ekstern databasetilgang
Av sikkerhetsgrunner, den første konfigurasjonen av databasebehandleren MySQL tillater ikke ekstern tilgang, for å endre det er det nødvendig å redigere konfigurasjonsdokumentet, normalt my.cnf
, som vanligvis finnes på ruten /etc/mysql
.
Hvis brukt mariadb, som nå er den "friere" versjonen av MySQL, sikkert my.cnf
vil være en lenke til /etc/alternatives/my.cnf
som igjen vil laste inn konfigurasjonen ved å bruke !includedir
, fra rutedokumentene /etc/mysql/mariadb.conf.d
, sannsynligvis fra dokumentet 50-server.cnf
Ressursen som databaseserveren bruker for å ikke ivareta eksterne forespørsler består av å "lytte" kun til forespørsler fra et bestemt sted. IP adresse som uttrykkes som verdien av parameteren bind-address
(som erstatter klassikeren skip-networking
) Når adressen er 127.0.0.1
(localhost
) bare forespørsler fra den lokale maskinen blir behandlet. Hvis kommentert med #
eller om verdien er 0.0.0.0
, vi betjener enhver adresse. For å tillate ekstern tilgang, er det sikreste å angi IP adresse (som kan være offentlig eller privat) på datamaskinen den er tilgjengelig fra, vanligvis noe sånt som bind-address = 192.168.1.74
. I ditt tilfelle kan dette utstyret fungere som en tunnel (omdirigerer med SSH) eller som en gangvei (med kjerne ip-tabeller) for å unngå å eksponere serveren utenfor et kontrollert område av nettverket.
På skjermbildet over kan du se at det er redigert my.cnf
med konfigurasjonen MySQL bruke bestillingen sudo nano /etc/mysql/my.cnf
. Ved arbeid med mariadb Med den vanlige konfigurasjonen vil rekkefølgen være noe sånt som sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
. Som nevnt ovenfor, når det er tilgang med administrative rettigheter, a GUI som MySQL arbeidsbenk for vanlig databasebehandling.
Lag databasene
Når databaseserveren er konfigurert, kan databasene og tabellene der IoT-dataene skal lagres, opprettes. For å gjøre dette kan du bruke kommandoer SQL fra konsollen eller fra GUI av en leder.
Rekkefølgen CREATE DATABASE
oppretter "temperaturer"-databasen. For å unngå feil kan skjemaet brukes temperaturas
;CREATE DATABASE IF NOT EXISTS
som ville opprette databasen "temperature_database" bare hvis den ikke eksisterer for øyeblikket.base_datos_temperaturas
;
Lag tabellene
Siden det i forskjellige databaser kan være tabeller med samme navn, kan du referere til en av dem ved å gå foran navnet på databasen og skille begge med et punktum, noe sånt som base_datos.tabla
Denne notasjonen kan også utvides til navnene på feltene base.tabla.campo
Hvis databasenavnet utelates når du opererer på en tabell (i dette tilfellet når du oppretter det), anses det som det refereres til den sist valgte. For å uttrykkelig velge en bestemt, kan du bruke kommandoen USE
og angi navnet ditt USE
base_datos_temperaturas
;
Når du oppretter tabeller i databaser, i samme operasjon, legges vanligvis informasjonen til feltene som danner dem til (selv om det også er mulig å endre dem senere) Som det gjøres med databasen, kan tabellen bare opprettes hvis den gjør det. eksisterer ikke ved å legge til klausulen IF NOT EXISTS
eller tvert imot, sørg for å slette tabellen før du oppretter den bare hvis den eksisterer med DROP TABLE IF EXISTS
valor_temperaturas
;
For å tillate navn på tabeller eller databaser som kan komme i konflikt med kommandoer eller prosedyrer, kan det graverende aksentmerket, noen ganger kalt et invertert komma, brukes til å omgi navnet og unngå konflikter eller feil i kommandoene. SQL.
Definer feltene
Feltene som legges til ved opprettelse av tabellen indikeres ved å sette dem i parentes og angi hvilken type data de lagrer. Datatypene som vanligvis brukes i en database for å lagre informasjon fra enheter koblet til tingenes internett er heltall (INT
o BIGINT
) desimaler (DECIMAL
, DOUBLE
o FLOAT
) av tid (DATE
, TIME
, DATETIME
o TIMESTAMP
) og tekst (hovedsakelig VARCHAR
selv om det finnes andre som TEXT
men de brukes ikke til IoT) Etter datatypen, og i parentes, er lengden på dataene og eventuelt formatet eller presisjonen lagt til.
Ved å legge til AUTO_INCREMENT
Definisjonen av et felt indikerer for databasebehandleren at, hvis ikke annet er angitt, når du oppretter en ny post, må verdien av den siste pluss den tilsvarende økningen automatisk lagres (som normalt er 1). Den er vanligvis inkludert i felt som brukes som numeriske indekser for postene.
Koden NOT NULL
indikerer at et felt i en post ikke kan være tomt, det må lagre en verdi.
Ved bruk DEFAULT
Når du oppretter et felt i en tabell, indikeres det MySQL en standardverdi for feltet forutsatt at når du legger til en ny post eller endrer den, er en annen verdi ikke uttrykkelig angitt. En ofte brukt standardverdi, i dette tilfellet for å overvåke IoT-verdier, er CURRENT_TIMESTAMP
som lar deg automatisk registrere gjeldende tid i et felt når du oppretter en ny post, slik at data automatisk identifiseres i tid.
For å optimere ytelsen til databasen, er det praktisk å inkludere på slutten av definisjonen av tabellfeltene et som brukes som en indeks med klausulen PRIMARY KEY (
ID er feltet som er valgt som indeks.ID
)
På slutten av definisjonen av en tabell kan du angi databasemotoren som den administreres med som parameterverdi ENGINE
med formatet ENGINE=InnoDB;
være InnoDB
motoren som er valgt i dette tilfellet.
Lag databaser, tabeller og konfigurer felt i en SQL-økt
Koden i følgende eksempel samler ordrene, trinnene som må tas, for å lage en database med en minimumstabell.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
CREATE DATABASE `base_datos_temperaturas`;
CREATE DATABASE IF NOT EXISTS `base_datos_temperaturas`;
USE `base_datos_temperaturas`;
DROP TABLE IF EXISTS `calefacciones`;
CREATE TABLE IF NOT EXISTS `calefacciones`
(
`identificador` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
`estancia` VARCHAR(32) NOT NULL DEFAULT ”,
`temperatura` FLOAT(4,2),
`fecha` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`identificador`)
)
ENGINE=InnoDB;
|
Lag sikkerhetskopier av databaser
Når serveren er konfigurert og databasen og dens tabeller er opprettet, vil alt være klart til å lagre informasjonen hentet av IoT-nodene. Selv om fokuset i denne artikkelserien ikke inkluderer vedlikehold, er det ett kritisk administrativt problem som er viktig å ta tak i: sikkerhetskopiering. Fra de fleste ledere, inkludert phpMyAdmin y MySQL arbeidsbenk, sikkerhetskopier kan lages og gjenopprettes, men det er vanlig å inkludere dem i et skript som automatiserer dem (sannsynligvis sammen med konfigurasjonen og mange andre dokumenter), så det er mer praktisk å bruke verktøyet MySQLDump, en klient som vanligvis er en del av en konvensjonell installasjon av MySQL, eller et alternativ som MySQL Data Dumper Hva inkluderer bestillingen? mydumper
å lage kopien og myloader
for å gjenopprette den
MySQLDump
Ordreformatet mysqldump
Det er veldig enkelt, du må bare angi brukernavnet user
, Passord password
og databasen du vil kopiere eller --all-databases
for å sikkerhetskopiere alle databaser som i følgende eksempel:
mysqldump --opt --user=pelaez --password=1234 --all-databases > copia.sql
Det forrige eksemplet genererer dokumentet copia.sql
som inneholder ordrene SQL (dvs. tekst) nødvendig for å gjenoppbygge alle databaser. Ved lagring i tekstformat tar kopien mye mer enn nødvendig, derfor komprimeres den også vanligvis for å spare plass på enheten den er lagret på.
Sikkerhetskopien generert med eksempelkommandoen kan gjenopprettes hvis informasjonen gikk tapt på grunn av en feil med kommandoen nedenfor som utfører operasjonene SQL av dokumentet copia.sql
mysql --user=pelaez --password=1234 < copia.sql
MySQL Data Dumper
Selv om de tidligere operasjonene ville være tilstrekkelig, er det veldig vanlig å bruke MySQL Data Dumper, allerede nesten en standard for ytelsen, selv om den ikke er en del av basisverktøyene som følger med MySQL
Følgende er alternativene for mydumper
mest brukt som, logisk sett, skal skrives som en del av den samme kommandoen, atskilt med mellomrom, selv om de i denne teksten er delt inn i linjer for å lette lesingen:
--host polaridad.es
"polaridad.es" er navnet på databaseserveren
--port 3306
"3306" er portnummeret som serveren lytter til (som standard er det 3306)
--user pelaez
"pelaez" er navnet på brukeren som databasen har tilgang til
--password 1234
"1234" er passordet til brukeren som har tilgang til databasen
--database temperaturas
"temperaturer" er navnet på databasen som sikkerhetskopieres
--no-locks
ikke lås databasen under kopieringen (som standard låser den)
--build-empty-files
kopier også tomme tabeller
--compress-input
komprimere inndata
--compress
komprimere utdata (den resulterende sikkerhetskopien)
For å gjenopprette sikkerhetskopien oppnådd med mydumper
den er brukt myloader
som primært brukes med følgende alternativer, som må inkluderes i samme rekkefølge atskilt med mellomrom:
--host polaridad.es
"polaridad.es" er navnet på databaseserveren
--port 3306
"3306" er portnummeret som serveren lytter til (som standard er det 3306)
--user pelaez
"pelaez" er navnet på brukeren som databasen har tilgang til
--password 1234
"1234" er passordet til brukeren som har tilgang til databasen
--directory=copia_iot
«iot_copy» er mappen som kopien generert med ligger mydumper
--overwrite-tables
overskrive tabeller selv om de allerede eksisterer
--verbose 3
"3" er graden av informasjon om prosessen (høyere, flere meldinger)
-C
bruke komprimering på datastrømmen
Den neste (og siste) artikkelen i denne serien forklarer hvordan bruke PHP-programmeringsspråket til å lagre informasjonen innhentet av enheter koblet til tingenes internett i databaser som er omtalt i denne teksten.
Legg inn kommentar