Bereiten Sie die MySQL- oder MariaDB-Datenbank vor
- Konfigurieren Sie den Datenbankserver
- Konfigurieren Sie root, den Haupt-MySQL-Administrator
- Konfigurieren Sie den Remote-Datenbankzugriff
- Erstellen Sie die Datenbanken
- Erstellen Sie die Tabellen
- Definieren Sie die Felder
- Erstellen Sie Datenbanken, Tabellen und konfigurieren Sie Felder in einer SQL-Sitzung
- Erstellen Sie Sicherungskopien von Datenbanken
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.
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.
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
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 MySQLTO '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
- Auf die Datenbank zugreifen «
-
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.0
Wir 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.
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
erstellt die Datenbank „Temperaturen“. Um Fehler zu vermeiden, kann das Formular verwendet werden temperaturas
;CREATE DATABASE IF NOT EXISTS
Dadurch würde die Datenbank „temperature_database“ nur dann erstellt, wenn sie derzeit nicht vorhanden ist.base_datos_temperaturas
;
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 ist das als Index ausgewählte Feld.ID
)
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.
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;
|
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