Przygotuj bazę danych MySQL lub MariaDB
Skonfiguruj serwer bazy danych
Po zainstalowaniu zestawu usług LAMP, WAMP, MAMP o XAMPP Jak wyjaśniono w pierwszym artykule z serii lub po prostu po zainstalowaniu na maszynie, która będzie pełnić funkcję serwera, sumy aplikacji realizujących odpowiednie usługi, konieczne jest dostosowanie niektórych aspektów konfiguracji serwera bazy danych MySQL a także utworzenie baz danych i tabel, które będą wykorzystywane na serwerze WWW do przechowywania danych z urządzeń Internetu Rzeczy.
Jeśli używany jest serwer publiczny, dostawca z pewnością zapewni jakiś rodzaj panelu pośredniczącego między użytkownikiem a „prawdziwą” konfiguracją bazy danych w celu zwiększenia bezpieczeństwa operacji. Jeśli tak, będziesz musiał zapoznać się z instrukcjami oferowanymi przez tego dostawcę. W przypadku serwera rzeczywistego lub wirtualnego hostowanego w obiektach strony trzeciej porównywalna okoliczność może zaistnieć, gdy zarządza nim dostawca; Jeśli zakontraktowano serwer niezarządzany (przez dostawcę, zarządzany przez użytkownika), obowiązują następujące informacje.
Ponieważ istotna jest znajomość instrukcji, które należy przekazać administratorowi bazy danych i wiadomo, że jest ona wykorzystywana jako środek do obsługi urządzeń Internetu Rzeczy, co będzie przedmiotem projektu, może to być wystarczy do korzystania z konsoli, ponieważ praca na samym serwerze bazy danych będzie sporadyczna. Jeśli obciążenie zarządzaniem zacznie rosnąć, może warto, bo wygodniej jest skorzystać z menadżera na samym serwerze, np. popularnego phpMyAdmin (z przeglądarki internetowej) lub lokalnie, choć oczywiście z dostępem do serwera bazy danych, z administratorem np Środowisko pracy MySQL z którego można występować w stopniu zaawansowanym GUI operacje, które zostaną wyjaśnione, i wiele innych, które nie są omówione w tym artykule i które zasługują na całą serię.
Oprócz mniej lub bardziej automatycznych operacji, które można wykonać Środowisko pracy MySQL na serwerze, bazach danych czy tabelach możliwe jest także wykonywanie zadań „ręcznie” poprzez pisanie i wykonywanie kompletnych skryptów lub samodzielnych poleceń w języku SQL. To samo co z narzędziem Środowisko pracy MySQL, SQL wymaga osobnego rozdziału i którego dogłębna wiedza będzie niezbędna, gdy wykonywana część prac nad siecią IoT wymaga zwrócenia większej uwagi na Backend niż zostało to tutaj wyjaśnione.
W każdym razie i oczywiście w celu rozwiązania niezbędnej konfiguracji przetwarzanej bazy danych IoT można użyć konsoli.
Skonfiguruj root, głównego administratora MySQL
Jeśli serwer bazy danych znajduje się na własnym komputerze, pierwszą rzeczą do zrobienia jest skonfigurowanie uprawnień administratora usługi, aby móc za pomocą tych uprawnień tworzyć innych użytkowników (którzy z kolei mogą je posiadać) oraz, jeśli ma to zastosowanie, bazy danych i tabele w którym przechowywane są informacje potrzebne systemowi Internetu Rzeczy.
Ważne jest, aby wziąć udział w procesie instalacji zestawu usług lub serwera MySQL, w zależności od zastosowanego procesu, ponieważ w wielu przypadkach instalator sam będzie odpowiedzialny za wykonanie tego i innych kroków i powtarzanie ich nie będzie konieczne, chyba że będziesz chciał zmodyfikować konfigurację.
Aby wykonać te zadania, zwykle pracujesz z konsolą. MySQL jako administrator. Aby uzyskać dostęp do tego trybu, użyj polecenia mysql -u root -p
o sudo mysql -u root
jeśli jest używany po raz pierwszy i podczas instalacji użytkownik nie został skonfigurowany root
Do Zakonu mysql -u root -p
wskazane przy opcji -u
Nazwa użytkownika (root
) i z opcją -p
(hasło), że podczas uzyskiwania dostępu do konsoli należy zażądać klucza MySQL. Aby powrócić do konsoli systemowej, możesz użyć polecenia quit
wyjść
Jak widać na powyższym zrzucie ekranu, przed opuszczeniem konsoli MySQL, aby ustawić uprawnienia użytkownika root
użyto polecenia:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
w którym:
- wszystkie przywileje zostały przyznane
GRANT ALL PRIVILEGES
- we wszystkich tabelach we wszystkich bazach danych
ON *.*
- do użytkownika
root
dostęp z komputera, na którym działa serwer MySQLTO 'root'@'localhost'
- używając 1234 jako hasła
IDENTIFIED BY '1234'
- z pozwoleniem na autoryzację innych użytkowników
WITH GRANT OPTION
Aby zdalnie zarządzać bazą danych, należy nadać uprawnienia odpowiedniemu użytkownikowi z innych lokalizacji. W poprzednim przykładzie było to dozwolone root
do którego można uzyskać dostęp z komputera, na którym działa serwer bazy danych (localhost
) Z 'root'@'localhost'
, jeśli jest używany 'root'@'%'
Dostęp będzie możliwy z dowolnej maszyny.
Jeśli masz uprawnienia administratora w systemie, możesz ponownie ustawić hasło użytkownika root
de MySQL. W tym celu konieczne jest zatrzymanie usługi (mysql
o mysqld
, w zależności od dystrybucji), uruchom go bez klucza, ustaw nowy klucz root
i uruchom go ponownie. Dostęp bez hasła umożliwia także nadanie uprawnień opisanych powyżej.
- zatrzymaj usługę
sudo /etc/init.d/mysql stop
- rzucać MySQL bez klucza i odblokuj konsolę
sudo mysqld_safe --skip-grant-tables &
- dostęp jako «
root
»mysql -u root
- Zmień hasło:
- dostęp do bazy danych «
mysql
»:USE mysql;
- Przypisać do "
root
» klawisz «1234»:UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
- zastosuj nowe uprawnienia:
FLUSH PRIVILEGES;
- wyjdź z konsoli
mysql
i wróć do systemu:quit
- dostęp do bazy danych «
-
zrestartuj usługę
sudo /etc/init.d/mysql restart
Skonfiguruj zdalny dostęp do bazy danych
Ze względów bezpieczeństwa wstępna konfiguracja menedżera bazy danych MySQL nie pozwala na zdalny dostęp, aby to zmienić, normalnie konieczna jest edycja dokumentu konfiguracyjnego my.cnf
, który zwykle znajduje się na trasie /etc/mysql
.
Jeśli jest używany MariaDB, która jest teraz „wolniejszą” wersją MySQLna pewno my.cnf
będzie link do /etc/alternatives/my.cnf
który z kolei załaduje konfigurację za pomocą !includedir
, z dokumentów trasy /etc/mysql/mariadb.conf.d
, prawdopodobnie z dokumentu 50-server.cnf
Zasób używany przez serwer bazy danych do nieobsługiwania zdalnych żądań polega na „nasłuchiwaniu” tylko żądań wysyłanych z określonej lokalizacji. adres IP co wyraża się jako wartość parametru bind-address
(który zastępuje klasyczny skip-networking
) Gdy adres jest 127.0.0.1
(localhost
) obsługiwane są tylko żądania z komputera lokalnego. Jeśli skomentowano z #
lub jeśli wartość wynosi 0.0.0.0
, obsługujemy dowolny adres. Aby umożliwić dostęp z zewnątrz, najbezpieczniej jest wskazać adres IP (który może być publiczny lub prywatny) komputera, z którego uzyskuje się dostęp, zwykle coś podobnego bind-address = 192.168.1.74
. W Twoim przypadku ten sprzęt może pełnić funkcję tunel (przekierowanie za pomocą SSH) lub jako chodnik (z podstawowe tabele IP), aby uniknąć wystawienia serwera poza kontrolowany obszar sieci.
Na powyższym zrzucie ekranu widać, że został on edytowany my.cnf
z konfiguracją MySQL korzystając z zamówienia sudo nano /etc/mysql/my.cnf
. W przypadku pracy z MariaDB Przy zwykłej konfiguracji kolejność byłaby mniej więcej taka sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
. Jak wspomniano powyżej, po uzyskaniu dostępu z uprawnieniami administracyjnymi: a GUI jako Środowisko pracy MySQL do regularnego zarządzania bazami danych.
Utwórz bazy danych
Po skonfigurowaniu serwera bazy danych można utworzyć bazy danych i tabele, w których będą przechowywane dane IoT. Aby to zrobić, możesz użyć poleceń SQL z konsoli lub z GUI menadżera.
Kolejność CREATE DATABASE
tworzy bazę „temperatur” Aby uniknąć błędów można skorzystać z formularza temperaturas
;CREATE DATABASE IF NOT EXISTS
co utworzyłoby bazę danych „temperature_database” tylko wtedy, gdyby obecnie nie istniała.base_datos_temperaturas
;
Utwórz tabele
Ponieważ w różnych bazach danych mogą istnieć tabele o tej samej nazwie, możesz odwołać się do jednej z nich, poprzedzając jej nazwę nazwą bazy danych i oddzielając obie kropką, np. base_datos.tabla
Zapis ten można również rozszerzyć na nazwy pól base.tabla.campo
Jeżeli nazwa bazy danych zostanie pominięta podczas operacji na tabeli (w tym przypadku podczas jej tworzenia), uważa się, że odnosi się ona do ostatnio wybranej. Aby wyraźnie wybrać konkretny, możesz użyć polecenia USE
i podaj swoje imię i nazwisko USE
base_datos_temperaturas
;
Tworząc tabele w bazach danych, w tej samej operacji zwykle dodawane są informacje o polach je tworzących (choć istnieje również możliwość ich późniejszej zmiany).Tak jak to ma miejsce w przypadku bazy danych, tabelę można utworzyć tylko wtedy, gdy tak się stanie nie istnieje, dodając klauzulę IF NOT EXISTS
lub wręcz przeciwnie, pamiętaj o usunięciu tabeli przed jej utworzeniem tylko wtedy, gdy istnieje DROP TABLE IF EXISTS
valor_temperaturas
;
Aby zezwolić na nazwy tabel lub baz danych, które mogą kolidować z poleceniami lub procedurami, można zastosować znak akcentu poważnego, czasami nazywany cudzysłowem, aby otoczyć nazwę i uniknąć konfliktów lub błędów w poleceniach. SQL.
Zdefiniuj pola
Pola dodawane podczas tworzenia tabeli są oznaczone poprzez ujęcie ich w nawiasy i wskazanie rodzaju przechowywanych w nich danych. Typy danych zwykle używane w bazie danych do przechowywania informacji z urządzeń podłączonych do Internetu rzeczy to liczby całkowite (INT
o BIGINT
) miejsca dziesiętne (DECIMAL
, DOUBLE
o FLOAT
) czasu (DATE
, TIME
, DATETIME
o TIMESTAMP
) i tekst (głównie VARCHAR
chociaż są też inni TEXT
ale nie są one używane w IoT) Po typie danych i w nawiasach dodaje się długość danych oraz, jeśli ma to zastosowanie, format lub precyzję.
Poprzez dodanie AUTO_INCREMENT
Definicja pola wskazuje administratorowi bazy danych, że jeśli nie wskazano inaczej, podczas tworzenia nowego rekordu, należy automatycznie zapisać wartość ostatniego rekordu plus odpowiedni przyrost (zwykle wynosi on 1). Zwykle jest on uwzględniany w polu pola, które służą jako numeryczne indeksy rekordów.
Kod NOT NULL
wskazuje, że pole w rekordzie nie może być puste, musi przechowywać jakąś wartość.
Podczas używania DEFAULT
Podczas tworzenia pola tabeli jest to wskazane MySQL domyślna wartość pola pod warunkiem, że przy dodawaniu nowego rekordu lub jego modyfikacji nie zostanie wyraźnie wskazana inna wartość. Często używaną wartością domyślną, w tym przypadku do monitorowania wartości IoT, jest CURRENT_TIMESTAMP
co pozwala na automatyczne zapisanie aktualnego czasu w polu podczas tworzenia nowego rekordu, dzięki czemu dane są automatycznie identyfikowane w czasie.
Aby zoptymalizować wydajność bazy danych, wygodnie jest dodać na końcu definicji pól tabeli takie, które służy jako indeks, z klauzulą PRIMARY KEY (
ID będący polem wybranym jako indeks.ID
)
Na końcu definicji tabeli można jako wartość parametru wskazać silnik bazy danych, za pomocą którego jest ona zarządzana ENGINE
z formatem ENGINE=InnoDB;
bycie InnoDB
wybrany w tym przypadku silnik.
Twórz bazy danych, tabele i konfiguruj pola w sesji SQL
Kod w poniższym przykładzie zestawia zamówienia i kroki, które należy wykonać, aby utworzyć bazę danych z minimalną tabelą.
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;
|
Twórz kopie zapasowe baz danych
Po skonfigurowaniu serwera oraz utworzeniu bazy danych i jej tabel wszystko będzie gotowe do przechowywania informacji uzyskanych przez węzły IoT. Chociaż niniejsza seria artykułów nie skupia się na konserwacji, istnieje jeden kluczowy problem administracyjny, którym należy się zająć: kopie zapasowe. Od większości menedżerów, w tym phpMyAdmin y Środowisko pracy MySQL, kopie zapasowe można wykonać i przywrócić, jednak często zdarza się, że umieszcza się je w skrypcie, który je automatyzuje (prawdopodobnie wraz z konfiguracją i wieloma innymi dokumentami), dzięki czemu korzystanie z narzędzia jest wygodniejsze Zrzut MySQL, klienta, który jest zwykle częścią konwencjonalnej instalacji MySQLlub jakąś alternatywę, np Zrzut danych MySQL Co obejmuje zamówienie? mydumper
aby wykonać kopię i myloader
aby go przywrócić
Zrzut MySQL
Forma zamówienia mysqldump
To bardzo proste, wystarczy podać nazwę użytkownika user
, Hasło password
i bazę danych, którą chcesz skopiować, lub --all-databases
wykonać kopię zapasową wszystkich baz danych, jak w poniższym przykładzie:
mysqldump --opt --user=pelaez --password=1234 --all-databases > copia.sql
Poprzedni przykład generuje dokument copia.sql
który zawiera zamówienia SQL (tj. tekst) potrzebny do odbudowania wszystkich baz danych. Zapisana w formacie tekstowym kopia zajmuje znacznie więcej niż to konieczne, dlatego też zazwyczaj jest kompresowana, aby zaoszczędzić miejsce na urządzeniu, na którym jest przechowywana.
Kopię zapasową wygenerowaną za pomocą przykładowego polecenia można przywrócić, jeśli informacje zostały utracone w wyniku błędu w poleceniu poniżej wykonującym operacje SQL dokumentu copia.sql
mysql --user=pelaez --password=1234 < copia.sql
Zrzut danych MySQL
Chociaż poprzednie operacje byłyby wystarczające, jest to bardzo powszechne w użyciu Zrzut danych MySQL, już prawie standard jego działania, chociaż nie jest częścią podstawowych narzędzi dołączonych do MySQL
Poniżej znajdują się opcje mydumper
najczęściej używane, które logicznie powinny być zapisane jako część tego samego polecenia, oddzielone spacjami, chociaż w tym tekście zostały one rozdzielone liniami, aby ułatwić czytanie:
--host polaridad.es
„polaridad.es” to nazwa serwera bazy danych
--port 3306
„3306” to numer portu, na którym nasłuchuje serwer (domyślnie jest to 3306)
--user pelaez
„pelaez” to nazwa użytkownika, za pomocą którego uzyskuje się dostęp do bazy danych
--password 1234
„1234” to hasło użytkownika, za pomocą którego uzyskuje się dostęp do bazy danych
--database temperaturas
„temperatury” to nazwa bazy danych, której kopia zapasowa jest tworzona
--no-locks
nie blokuj bazy danych podczas kopiowania (domyślnie się blokuje)
--build-empty-files
skopiuj także puste tabele
--compress-input
kompresować wejście
--compress
skompresuj dane wyjściowe (wynikową kopię zapasową)
Aby przywrócić kopię zapasową uzyskaną za pomocą mydumper
to jest używane myloader
który jest używany głównie z następującymi opcjami, które muszą być zawarte w tej samej kolejności, oddzielone spacjami:
--host polaridad.es
„polaridad.es” to nazwa serwera bazy danych
--port 3306
„3306” to numer portu, na którym nasłuchuje serwer (domyślnie jest to 3306)
--user pelaez
„pelaez” to nazwa użytkownika, za pomocą którego uzyskuje się dostęp do bazy danych
--password 1234
„1234” to hasło użytkownika, za pomocą którego uzyskuje się dostęp do bazy danych
--directory=copia_iot
«iot_copy» to folder, w którym znajduje się wygenerowana kopia mydumper
--overwrite-tables
nadpisz tabele, nawet jeśli już istnieją
--verbose 3
„3” to stopień poinformowania procesu (wyższy, więcej komunikatów)
-C
użyj kompresji strumienia danych
Wyjaśnia to następny (i ostatni) artykuł z tej serii jak wykorzystać język programowania PHP do przechowywania w bazach danych informacji uzyskanych przez urządzenia podłączone do Internetu Rzeczy o których była mowa w tym tekście.
Zamieść komentarz