Valmistage ette MySQL või MariaDB andmebaas
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.
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.
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
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 MySQLTO '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
- juurdepääs andmebaasile «
-
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.
Ü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
loob “temperatuuride” andmebaasi Vigade vältimiseks saab kasutada vormi temperaturas
;CREATE DATABASE IF NOT EXISTS
mis looks andmebaasi “temperatuuri_andmebaas” ainult siis, kui seda praegu ei eksisteeri.base_datos_temperaturas
;
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 on indeksiks valitud väli.ID
)
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.
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;
|
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