Przygotuj bazę danych MySQL lub MariaDB

Przygotuj bazę danych MySQL lub MariaDB

Przygotuj bazę danych MySQL lub MariaDB

Serwer WWW IoTSerwer WWW HTTP POST IoTBaza danych MySQL. Serwer WWW IoTSerwer WWW IoT w języku PHP

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ę.

Panel administracyjny MySQL Workbench

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.

Edytor zapytań SQL w MySQL Workbench

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

Konfiguracja użytkownika root MySQL z konsoli

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 MySQL TO '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
  • 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.

Konfiguracja bazy danych MySQL poprzez edycję pliku my.cnf (w etc mysql)

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 temperaturas; tworzy bazę „temperatur” Aby uniknąć błędów można skorzystać z formularza CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; co utworzyłoby bazę danych „temperature_database” tylko wtedy, gdyby obecnie nie istniała.

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) ID będący polem wybranym jako indeks.

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ą.

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

Być może przegapiłeś