Bereiten Sie die MySQL- oder MariaDB-Datenbank vor

Bereiten Sie die MySQL- oder MariaDB-Datenbank vor

Bereiten Sie die MySQL- oder MariaDB-Datenbank vor

IoT-WebserverHTTP POST IoT-WebserverMySQL-Datenbank. IoT-WebserverIoT-Webserver in PHP-Sprache

Konfigurieren Sie den Datenbankserver

Sobald die Dienste installiert sind LAMP, WAMP, MAMP o XAMPP Wie im ersten Artikel der Serie erläutert oder einfach nach der Installation der Gesamtheit der Anwendungen, die die entsprechenden Dienste implementieren, auf dem Rechner, der als Server fungieren soll, ist es notwendig, einige Aspekte der Konfiguration des Datenbankservers anzupassen MySQL sowie die Erstellung der Datenbanken und Tabellen, die auf dem Webserver zum Speichern von Daten von Internet-of-Things-Geräten verwendet werden.

Wenn ein öffentlicher Server verwendet wird, wird der Anbieter sicherlich eine Art Panel zur Verfügung gestellt haben, das zwischen dem Benutzer und der „echten“ Konfiguration der Datenbank vermittelt, um die Sicherheit im Betrieb zu erhöhen. In diesem Fall müssen Sie die Anweisungen dieses Anbieters beachten. Im Falle eines realen oder virtuellen Servers, der in den Einrichtungen eines Dritten gehostet wird, kann ein vergleichbarer Umstand eintreten, wenn der Anbieter ihn verwaltet; Wenn ein nicht verwalteter Server beauftragt wurde (vom Anbieter, verwaltet vom Benutzer), gelten die folgenden Informationen.

Da es wichtig ist, die Anweisungen zu kennen, die dem Datenbankmanager gegeben werden müssen, und davon ausgegangen wird, dass er als Mittel zur Unterstützung von Geräten für das Internet der Dinge verwendet wird, was Gegenstand des Projekts wäre, könnte dies der Fall sein Es reicht aus, die Konsole zu verwenden, da die Arbeit am Datenbankserver selbst gelegentlich erfolgt. Wenn der Verwaltungsaufwand zunimmt, kann es sich lohnen, weil es bequemer ist, einen Manager auf dem Server selbst zu verwenden, wie z. B. den beliebten phpMyAdmin (über einen Webbrowser) oder lokal, natürlich mit Zugriff auf den Datenbankserver, mit einem Administrator wie z MySQL Workbench von dem aus man im fortgeschrittenen Stadium auftreten kann GUI die Operationen, die erklärt werden, und viele andere, die außerhalb dieses Artikels liegen und eine ganze Serie verdienen.

MySQL Workbench-Admin-Panel

Zusätzlich zu den mehr oder weniger automatischen Vorgängen, die durchgeführt werden können MySQL Workbench Auf dem Server, in Datenbanken oder Tabellen ist es auch möglich, Aufgaben „manuell“ auszuführen, indem komplette Skripte oder unabhängige Befehle geschrieben und ausgeführt werden SQL. Das Gleiche wie beim Werkzeug MySQL Workbench, SQL erfordert ein separates Kapitel und es ist wichtig, es eingehend zu kennen, wenn der Teil der IoT-Webarbeit, der ausgeführt wird, ernsthaftere Aufmerksamkeit erfordert Backend als hier erklärt wird.

MySQL Workbench SQL-Abfrageeditor

In jedem Fall und natürlich zur Lösung der notwendigen Konfiguration der verarbeiteten IoT-Datenbank kann die Konsole verwendet werden.

Konfigurieren Sie root, den Haupt-MySQL-Administrator

Befindet sich der Datenbankserver auf einem eigenen Computer, müssen zunächst die Dienstadministratorberechtigungen konfiguriert werden, um mit diesen Berechtigungen andere Benutzer (die wiederum über diese verfügen können) und gegebenenfalls die Datenbanken und Tabellen erstellen zu können in dem die Informationen gespeichert werden, die das Internet der Dinge benötigt.

Es ist wichtig, den Installationsprozess der Dienste oder des Servers zu überwachen MySQL, abhängig vom durchgeführten Prozess, da in vielen Fällen der Installateur selbst für die Durchführung dieses und anderer Schritte verantwortlich ist und es nicht notwendig sein wird, sie zu wiederholen, es sei denn, Sie möchten die Konfiguration ändern.

Um diese Aufgaben auszuführen, arbeiten Sie normalerweise mit der Konsole. MySQL als Administrator. Um auf diesen Modus zuzugreifen, verwenden Sie den Befehl mysql -u root -p o sudo mysql -u root Bei der ersten Verwendung und während der Installation wurde der Benutzer nicht konfiguriert root

Konfigurieren des MySQL-Root-Benutzers über die Konsole

In den Orden mysql -u root -p mit der Option angegeben -u der Nutzername (root) und mit der Option -p (Passwort), dass der Schlüssel beim Zugriff auf die Konsole abgefragt werden muss MySQL. Um zur Systemkonsole zurückzukehren, können Sie den Befehl verwenden quit ausgehen

Wie im Screenshot oben zu sehen ist, bevor Sie die Konsole verlassen MySQL, um die Berechtigungen des Benutzers festzulegen root Der Befehl wurde verwendet:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
in welchem:

  • Alle Privilegien werden gewährt GRANT ALL PRIVILEGES
  • in allen Tabellen in allen Datenbanken ON *.*
  • an den Benutzer root Zugriff von der Maschine aus, auf der der Server läuft MySQL TO 'root'@'localhost'
  • Verwenden Sie 1234 als Passwort IDENTIFIED BY '1234'
  • mit der Erlaubnis, andere Benutzer zu autorisieren WITH GRANT OPTION

Um die Datenbank aus der Ferne verwalten zu können, müssen dem entsprechenden Benutzer von anderen Standorten aus Berechtigungen gewährt werden. Im vorherigen Beispiel war es erlaubt root Zugriff von der Maschine aus, auf der der Datenbankserver läuft (localhost) mit 'root'@'localhost', Falls gebraucht 'root'@'%' Der Zugriff ist von jedem Computer aus möglich.

Wenn Sie über Administratorrechte auf dem System verfügen, können Sie das Benutzerkennwort wiederherstellen root de MySQL. Dazu ist es notwendig, den Dienst zu stoppen (mysql o mysqld, abhängig von der Distribution), booten Sie es ohne Schlüssel, legen Sie den neuen Schlüssel fest root und starten Sie es neu. Durch den Zugriff ohne Passwort ist es auch möglich, die oben beschriebenen Privilegien zu gewähren.

  • Stoppen Sie den Dienst sudo /etc/init.d/mysql stop
  • starten MySQL ohne Schlüssel und entriegeln Sie die Konsole sudo mysqld_safe --skip-grant-tables &
  • Zugriff als «root» mysql -u root
  • Änder das Passwort:
    • Auf die Datenbank zugreifen «mysql»: USE mysql;
    • zuweisen "root» der Schlüssel «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • Wenden Sie die neuen Berechtigungen an: FLUSH PRIVILEGES;
    • Konsole verlassen mysql und zurück zum System: quit
  • Dienst neu starten sudo /etc/init.d/mysql restart

Konfigurieren Sie den Remote-Datenbankzugriff

Aus Sicherheitsgründen erfolgt die Erstkonfiguration des Datenbankmanagers MySQL Ermöglicht keinen Fernzugriff. Um ihn zu ändern, muss normalerweise das Konfigurationsdokument bearbeitet werden my.cnf, die normalerweise auf der Route zu finden ist /etc/mysql.

Falls gebraucht MariaDB, die jetzt die „freiere“ Version von ist MySQLsicher my.cnf wird ein Link zu sein /etc/alternatives/my.cnf Dadurch wird wiederum die Konfiguration geladen !includedir, aus den Streckenunterlagen /etc/mysql/mariadb.conf.d, wahrscheinlich aus dem Dokument 50-server.cnf

Die Ressource, die der Datenbankserver verwendet, um sich nicht um Remote-Anfragen zu kümmern, besteht darin, nur auf Anfragen zu „lauschen“, die von einem bestimmten Standort aus gestellt werden. IP Adresse was als Wert des Parameters ausgedrückt wird bind-address (was den Klassiker ersetzt skip-networking) Wenn die Adresse ist 127.0.0.1 (localhost) werden nur Anfragen vom lokalen Rechner bearbeitet. Wenn mit kommentiert # oder wenn der Wert ist 0.0.0.0Wir bedienen jede Adresse. Um den Zugriff von außen zu ermöglichen, ist es am sichersten, dies anzugeben IP Adresse (die öffentlich oder privat sein kann) des Computers, von dem aus darauf zugegriffen wird, normalerweise so etwas wie bind-address = 192.168.1.74. In Ihrem Fall kann dieses Gerät als... dienen Tunnel (Umleitung mit SSH) oder als Gehweg (mit dem Kern-IP-Tabellen), um zu vermeiden, dass der Server außerhalb eines kontrollierten Bereichs des Netzwerks exponiert wird.

MySQL-Datenbankkonfiguration durch Bearbeiten der Datei my.cnf (in etc. mysql)

Im Screenshot oben können Sie sehen, dass es bearbeitet wurde my.cnf mit der Konfiguration MySQL mit der Bestellung sudo nano /etc/mysql/my.cnf. Im Falle der Arbeit mit MariaDB Bei der üblichen Konfiguration würde die Reihenfolge etwa so aussehen sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. Wie oben erwähnt, sobald ein Zugriff mit Administratorrechten vorliegt, a GUI als MySQL Workbench für die regelmäßige Datenbankverwaltung.

Erstellen Sie die Datenbanken

Sobald der Datenbankserver konfiguriert ist, können die Datenbanken und Tabellen erstellt werden, in denen die IoT-Daten gespeichert werden. Dazu können Sie Befehle verwenden SQL von der Konsole oder von der GUI eines Managers.

Die Bestellung CREATE DATABASE temperaturas; erstellt die Datenbank „Temperaturen“. Um Fehler zu vermeiden, kann das Formular verwendet werden CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; Dadurch würde die Datenbank „temperature_database“ nur dann erstellt, wenn sie derzeit nicht vorhanden ist.

Erstellen Sie die Tabellen

Da es in verschiedenen Datenbanken Tabellen mit demselben Namen geben kann, können Sie auf eine davon verweisen, indem Sie ihrem Namen den Namen der Datenbank voranstellen und beide durch einen Punkt trennen, etwa „ base_datos.tabla Diese Notation lässt sich auch auf die Namen der Felder erweitern base.tabla.campo

Wenn der Datenbankname bei der Bearbeitung einer Tabelle (in diesem Fall beim Erstellen) weggelassen wird, wird davon ausgegangen, dass auf die zuletzt ausgewählte Tabelle verwiesen wird. Um gezielt eine bestimmte auszuwählen, können Sie den Befehl verwenden USE und geben Sie Ihren Namen an USE base_datos_temperaturas;

Beim Erstellen von Tabellen in Datenbanken werden im selben Vorgang normalerweise die Informationen der Felder hinzugefügt, aus denen sie bestehen (obwohl es auch möglich ist, sie später zu ändern). Wie bei der Datenbank kann die Tabelle nur erstellt werden, wenn dies der Fall ist existiert nicht und fügt die Klausel hinzu IF NOT EXISTS oder im Gegenteil, stellen Sie sicher, dass Sie die Tabelle vor dem Erstellen nur dann löschen, wenn sie mit vorhanden ist DROP TABLE IF EXISTS valor_temperaturas;

Um Namen von Tabellen oder Datenbanken zuzulassen, die mit Befehlen oder Prozeduren in Konflikt geraten könnten, kann das Akzentzeichen „Grab“, manchmal auch Anführungszeichen genannt, verwendet werden, um den Namen zu umgeben und Konflikte oder Fehler in den Befehlen zu vermeiden. SQL.

Definieren Sie die Felder

Die Felder, die beim Erstellen der Tabelle hinzugefügt werden, werden durch Einschließen in Klammern und Angabe der Art der darin gespeicherten Daten angezeigt. Die Datentypen, die typischerweise in einer Datenbank zum Speichern von Informationen von Geräten verwendet werden, die mit dem Internet der Dinge verbunden sind, sind Ganzzahlen (INT o BIGINT) Dezimalzahlen (DECIMAL, DOUBLE o FLOAT) von Zeit (DATE, TIME, DATETIME o TIMESTAMP) und Text (hauptsächlich VARCHAR obwohl es andere wie TEXT Sie werden jedoch nicht für IoT verwendet.) Nach dem Datentyp und in Klammern wird die Länge der Daten und gegebenenfalls das Format oder die Genauigkeit hinzugefügt.

Beim Hinzufügen AUTO_INCREMENT Die Definition eines Feldes weist den Datenbankmanager darauf hin, dass, wenn nichts anderes angegeben ist, beim Erstellen eines neuen Datensatzes automatisch der Wert des letzten Datensatzes plus das entsprechende Inkrement gespeichert werden muss (normalerweise 1). Normalerweise ist er im enthalten Felder, die als numerische Indizes der Datensätze verwendet werden.

Der Code NOT NULL gibt an, dass ein Feld in einem Datensatz nicht leer sein darf, sondern einen Wert speichern muss.

Bei der Verwendung DEFAULT Beim Erstellen eines Feldes einer Tabelle wird es angezeigt MySQL ein Standardwert für das Feld, sofern beim Hinzufügen oder Ändern eines neuen Datensatzes nicht ausdrücklich ein anderer Wert angegeben wird. Ein häufig verwendeter Standardwert, in diesem Fall zur Überwachung von IoT-Werten, ist CURRENT_TIMESTAMP Dadurch können Sie beim Erstellen eines neuen Datensatzes automatisch die aktuelle Zeit in einem Feld erfassen, sodass Daten automatisch rechtzeitig identifiziert werden.

Um die Leistung der Datenbank zu optimieren, ist es praktisch, am Ende der Definition der Tabellenfelder eines hinzuzufügen, das als Index mit der Klausel verwendet wird PRIMARY KEY (ID) ID ist das als Index ausgewählte Feld.

Am Ende der Definition einer Tabelle können Sie als Parameterwert die Datenbank-Engine angeben, mit der sie verwaltet wird ENGINE mit dem Format ENGINE=InnoDB; siendo InnoDB der in diesem Fall gewählte Motor.

Erstellen Sie Datenbanken, Tabellen und konfigurieren Sie Felder in einer SQL-Sitzung

Der Code im folgenden Beispiel fasst die Befehle und Schritte zusammen, die ausgeführt werden müssten, um eine Datenbank mit einer Mindesttabelle zu erstellen.

Erstellen Sie Sicherungskopien von Datenbanken

Sobald der Server konfiguriert und die Datenbank und ihre Tabellen erstellt wurden, wäre alles bereit, die von den IoT-Knoten erhaltenen Informationen zu speichern. Obwohl der Schwerpunkt dieser Artikelserie nicht auf der Wartung liegt, gibt es ein kritisches Verwaltungsproblem, das unbedingt angegangen werden muss: Backups. Von den meisten Managern, einschließlich phpMyAdmin y MySQL WorkbenchSicherungskopien können zwar erstellt und wiederhergestellt werden, aber es ist üblich, sie in ein Skript einzubinden, das sie automatisiert (wahrscheinlich zusammen mit der Konfiguration und vielen anderen Dokumenten), damit die Verwendung des Tools bequemer ist MySQLDump, ein Client, der normalerweise Teil einer herkömmlichen Installation von ist MySQL, oder eine Alternative wie MySQL-Daten-Dumper Was beinhaltet die Bestellung? mydumper die Kopie erstellen und myloader um es wiederherzustellen

MySQLDump

Das Bestellformat mysqldump Es ist ganz einfach, Sie müssen nur den Benutzernamen angeben user, Passwort password und die Datenbank, die Sie kopieren möchten oder --all-databases um alle Datenbanken wie im folgenden Beispiel zu sichern:

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

Das vorherige Beispiel generiert das Dokument copia.sql welches die Bestellungen enthält SQL (d. h. Text), der zum Neuaufbau aller Datenbanken benötigt wird. Beim Speichern im Textformat nimmt die Kopie viel mehr als nötig ein, weshalb sie meist auch komprimiert wird, um Platz auf dem Gerät zu sparen, auf dem sie gespeichert ist.

Die mit dem Beispielbefehl erstellte Sicherung könnte wiederhergestellt werden, wenn die Informationen aufgrund eines Fehlers mit dem folgenden Befehl, der die Vorgänge ausführt, verloren gegangen sind SQL des Dokuments copia.sql

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

MySQL-Daten-Dumper

Obwohl die vorherigen Operationen ausreichend wären, wird sie sehr häufig verwendet MySQL-Daten-Dumper, bereits fast ein Standard für seine Leistung, obwohl es nicht zu den Basistools gehört, die im Lieferumfang enthalten sind MySQL

Im Folgenden sind die Optionen aufgeführt mydumper am häufigsten verwendet, die logischerweise als Teil desselben Befehls geschrieben werden sollten, getrennt durch Leerzeichen, obwohl sie in diesem Text zur leichteren Lesbarkeit in Zeilen getrennt wurden:

--host polaridad.es „polaridad.es“ ist der Name des Datenbankservers
--port 3306 „3306“ ist die Portnummer, die der Server überwacht (standardmäßig ist sie 3306).
--user pelaez „pelaez“ ist der Name des Benutzers, mit dem auf die Datenbank zugegriffen wird
--password 1234 „1234“ ist das Passwort des Benutzers, mit dem auf die Datenbank zugegriffen wird
--database temperaturas „Temperaturen“ ist der Name der Datenbank, die gesichert wird
--no-locks Sperren Sie die Datenbank während des Kopiervorgangs nicht (standardmäßig ist sie gesperrt).
--build-empty-files Kopieren Sie auch leere Tabellen
--compress-input Eingabe komprimieren
--compress Komprimieren Sie die Ausgabe (das resultierende Backup)

Um das mit erhaltene Backup wiederherzustellen mydumper es wird benutzt myloader Dies wird hauptsächlich mit den folgenden Optionen verwendet, die in derselben Reihenfolge, getrennt durch Leerzeichen, enthalten sein müssen:

--host polaridad.es „polaridad.es“ ist der Name des Datenbankservers
--port 3306 „3306“ ist die Portnummer, die der Server überwacht (standardmäßig ist sie 3306).
--user pelaez „pelaez“ ist der Name des Benutzers, mit dem auf die Datenbank zugegriffen wird
--password 1234 „1234“ ist das Passwort des Benutzers, mit dem auf die Datenbank zugegriffen wird
--directory=copia_iot „iot_copy“ ist der Ordner, in dem sich die mit erstellte Kopie befindet mydumper
--overwrite-tables Überschreiben Sie Tabellen, auch wenn sie bereits vorhanden sind
--verbose 3 „3“ ist der Informationsgrad des Prozesses (höher, mehr Nachrichten)
-C Verwenden Sie eine Komprimierung für den Datenstrom

Der nächste (und letzte) Artikel dieser Reihe erklärt es wie man die Programmiersprache PHP verwendet, um die Informationen, die von Geräten erhalten werden, die mit dem Internet der Dinge verbunden sind, in Datenbanken zu speichern über die in diesem Text gesprochen wurde.

Geben Sie Anmerkung

Sie können vermisst haben