Prepare o banco de dados MySQL ou MariaDB

Prepare o banco de dados MySQL ou MariaDB

Prepare o banco de dados MySQL ou MariaDB

Servidor web IoTServidor Web HTTP POST IoTBanco de dados MySQL. Servidor web IoTServidor Web IoT em linguagem PHP

Configurar o servidor de banco de dados

Depois que o conjunto de serviços estiver instalado LAMP, WAMP, MAMP o XAMPP Conforme explicado no primeiro artigo da série ou simplesmente após instalar na máquina que atuará como servidor o somatório de aplicações que implementam os serviços correspondentes, é necessário ajustar alguns aspectos da configuração do servidor de banco de dados MySQL além de criar os bancos de dados e tabelas que serão utilizados no servidor web para armazenar dados dos dispositivos da Internet das Coisas.

Caso seja utilizado um servidor público, o provedor certamente terá disponibilizado algum tipo de painel para mediar entre o usuário e a configuração “real” do banco de dados de forma a reforçar a segurança na operação. Nesse caso, você deverá consultar as instruções que este provedor oferece. No caso de um servidor real ou virtual alojado em instalações de terceiros, uma circunstância comparável pode surgir quando o fornecedor o gere; Caso tenha sido contratado um servidor não gerenciado (pelo provedor, gerenciado pelo usuário), serão aplicáveis ​​as seguintes informações.

Como o importante é conhecer as instruções que devem ser dadas ao gerenciador de banco de dados e se entende que ele está sendo utilizado como meio de suporte a dispositivos para a Internet das Coisas, que seria objeto do projeto, pode-se basta usar o console, pois o trabalho no próprio servidor de banco de dados será ocasional. Se a carga de trabalho de gerenciamento começar a aumentar, pode valer a pena, pois é mais conveniente, utilizar um gerenciador no próprio servidor, como o popular phpMyAdmin (a partir de um navegador web) ou localmente, embora, claro, acessando o servidor de banco de dados, com um administrador como banco de trabalho mysql a partir do qual atuar em um nível avançado GUI as operações que serão explicadas e muitas outras que estão fora deste artigo e que merecem uma série inteira.

Painel de administração do MySQL Workbench

Além das operações mais ou menos automáticas que podem ser feitas com banco de trabalho mysql no servidor, bancos de dados ou tabelas também é possível realizar tarefas "manualmente" escrevendo e executando scripts completos ou comandos independentes em SQL. O mesmo que com a ferramenta banco de trabalho mysql, SQL requer um capítulo separado e que será essencial conhecer em profundidade quando a parte do trabalho da IoT web que é realizada envolve uma atenção mais séria ao backend do que é explicado aqui.

Editor de consultas SQL do MySQL Workbench

Em qualquer caso, e claro para resolver a configuração necessária da base de dados IoT que está sendo processada, o console pode ser utilizado.

Configure root, o administrador principal do MySQL

Se o servidor de banco de dados estiver em sua própria máquina, a primeira coisa a fazer é configurar as permissões do administrador do serviço para poder criar, utilizando esses privilégios, outros usuários (que por sua vez poderão tê-los) e, se for o caso, os bancos de dados e tabelas para armazenar as informações que o sistema da Internet das Coisas precisa.

É importante atender ao processo de instalação do conjunto de serviços ou do servidor MySQL, dependendo do processo seguido, pois, em muitos casos, o próprio instalador se encarregará de realizar esta e outras etapas e não será necessário repeti-las exceto quando se desejar modificar a configuração.

Para executar essas tarefas, normalmente você trabalha com o console. MySQL como administrador. Para acessar este modo, use o comando mysql -u root -p o sudo mysql -u root se usado pela primeira vez e durante a instalação o usuário não foi configurado root

Configurando o usuário root do MySQL a partir do console

Para a Ordem mysql -u root -p indicado com a opção -u o nome de usuário (root) e com a opção -p (senha) que a chave deve ser solicitada ao acessar o console MySQL. Para retornar ao console do sistema você pode usar o comando quit para sair

Como pode ser visto na imagem acima, antes de sair do console MySQL, para definir os privilégios do usuário root o comando foi usado:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
na que:

  • todos os privilégios são concedidos GRANT ALL PRIVILEGES
  • em todas as tabelas em todos os bancos de dados ON *.*
  • ao usuário root acessando da máquina que executa o servidor MySQL TO 'root'@'localhost'
  • usando 1234 como senha IDENTIFIED BY '1234'
  • com permissão para autorizar outros usuários WITH GRANT OPTION

Para gerenciar o banco de dados remotamente, devem ser concedidos privilégios ao usuário correspondente de outros locais. No exemplo anterior foi permitido root acessado da máquina na qual o servidor de banco de dados está sendo executado (localhost) Com 'root'@'localhost', se usado 'root'@'%' O acesso será permitido de qualquer máquina.

Se você tiver privilégios de administrador no sistema, poderá restabelecer a senha do usuário root de MySQL. Para isso é necessário interromper o serviço (mysql o mysqld, dependendo da distribuição), inicialize-o sem chave, defina a nova chave root e reinicie-o. Ao acessar sem senha também é possível conceder os privilégios descritos acima.

  • parar o serviço sudo /etc/init.d/mysql stop
  • arremessar MySQL sem chave e desbloquear o console sudo mysqld_safe --skip-grant-tables &
  • acessar como «root» mysql -u root
  • altere a senha:
    • acessar o banco de dados «mysql»: USE mysql;
    • atribuir a "root» a chave «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • aplique os novos privilégios: FLUSH PRIVILEGES;
    • sair do console mysql e retorne ao sistema: quit
  • reinicie o serviço sudo /etc/init.d/mysql restart

Configurar o acesso remoto ao banco de dados

Por motivos de segurança, a configuração inicial do gerenciador de banco de dados MySQL não permite acesso remoto, para alterá-lo é necessário editar o documento de configuração, normalmente my.cnf, que geralmente é encontrado na rota /etc/mysql.

Se usado MariaDB, que agora é a versão "mais livre", de MySQLcom certeza my.cnf será um link para /etc/alternatives/my.cnf que, por sua vez, carregará a configuração, usando !includedir, dos documentos de rota /etc/mysql/mariadb.conf.d, provavelmente do documento 50-server.cnf

O recurso que o servidor de banco de dados utiliza para não atender solicitações remotas consiste em “escutar” apenas as solicitações feitas a partir de um determinado local. direção IP que é expresso como o valor do parâmetro bind-address (que substitui o clássico skip-networking) Quando o endereço é 127.0.0.1 (localhost) apenas as solicitações da máquina local são atendidas. Se comentado com # ou se o valor for 0.0.0.0, atendemos qualquer endereço. Para permitir o acesso externo, o mais seguro é indicar o direção IP (que pode ser público ou privado) do computador de onde é acessado, geralmente algo como bind-address = 192.168.1.74. No seu caso, este equipamento pode funcionar como túnel (redirecionando com SSH) ou como passarela (com o tabelas ip principais) para evitar a exposição do servidor fora de uma área controlada da rede.

Configuração do banco de dados MySQL editando o arquivo my.cnf (em etc mysql)

Na captura de tela acima você pode ver que foi editado my.cnf com a configuração MySQL usando o pedido sudo nano /etc/mysql/my.cnf. No caso de trabalhar com MariaDB Com a configuração normal, a ordem seria algo como sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. Conforme mencionado acima, uma vez que haja acesso com privilégios administrativos, um GUI como banco de trabalho mysql para gerenciamento regular de banco de dados.

Crie os bancos de dados

Depois que o servidor de banco de dados estiver configurado, os bancos de dados e tabelas nos quais armazenar os dados de IoT poderão ser criados. Para fazer isso, você pode usar comandos SQL do console ou do GUI de um gerente.

A ordem CREATE DATABASE temperaturas; cria o banco de dados de “temperaturas”. Para evitar erros, o formulário pode ser usado CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; que criaria o banco de dados “temperature_database” somente se ele não existir atualmente.

Crie as tabelas

Como em bancos de dados diferentes podem existir tabelas com o mesmo nome, você pode se referir a uma delas precedendo seu nome pelo do banco de dados e separando ambas por um ponto, algo como base_datos.tabla Esta notação também pode ser estendida aos nomes dos campos base.tabla.campo

Se o nome do banco de dados for omitido ao operar sobre uma tabela (neste caso, ao criá-la) considera-se que está referenciado o último selecionado. Para selecionar expressamente um específico, você pode usar o comando USE e indique seu nome USE base_datos_temperaturas;

Ao criar tabelas em bancos de dados, na mesma operação, geralmente são adicionadas as informações dos campos que as formam (embora também seja possível alterá-las posteriormente). Assim como é feito com o banco de dados, a tabela só pode ser criada se o fizer. não existe adicionando a cláusula IF NOT EXISTS ou pelo contrário, certifique-se de excluir a tabela antes de criá-la somente se ela existir usando DROP TABLE IF EXISTS valor_temperaturas;

Para permitir nomes de tabelas ou bancos de dados que possam entrar em conflito com comandos ou procedimentos, o acento grave, às vezes chamado de vírgula invertida, pode ser usado para circundar o nome e evitar conflitos ou erros nos comandos. SQL.

Defina os campos

Os campos que são adicionados ao criar a tabela são indicados colocando-os entre parênteses e indicando o tipo de dados que armazenam. Os tipos de dados normalmente usados ​​em um banco de dados para armazenar informações de dispositivos conectados à Internet das Coisas são inteiros (INT o BIGINT) decimais (DECIMAL, DOUBLE o FLOAT) de tempo (DATE, TIME, DATETIME o TIMESTAMP) e texto (principalmente VARCHAR embora existam outros como TEXT mas não são usados ​​para IoT) Após o tipo de dados, e entre parênteses, são adicionados o comprimento dos dados e, se aplicável, o formato ou precisão.

Adicionando AUTO_INCREMENT A definição de um campo indica ao gerenciador de banco de dados que, se nada mais for indicado, ao criar um novo registro deverá ser armazenado automaticamente o valor do último mais o incremento correspondente (que normalmente é 1). campos que são usados ​​como índices numéricos dos registros.

O código NOT NULL indica que um campo em um registro não pode estar vazio, ele deve armazenar algum valor.

Ao usar DEFAULT Ao criar um campo de uma tabela, é indicado MySQL um valor padrão para o campo desde que ao adicionar um novo registro ou modificá-lo não seja expressamente indicado outro valor. Um valor padrão frequentemente usado, neste caso para monitorar valores de IoT, é CURRENT_TIMESTAMP que permite registrar automaticamente a hora atual em um campo ao criar um novo registro, para que os dados sejam identificados automaticamente no tempo.

Para otimizar o desempenho do banco de dados, é conveniente incluir ao final da definição dos campos da tabela aquele que é utilizado como índice com a cláusula PRIMARY KEY (ID) ID sendo o campo escolhido como índice.

No final da definição de uma tabela você pode indicar o mecanismo de banco de dados com o qual ela é gerenciada como valor do parâmetro ENGINE com o formato ENGINE=InnoDB; ser InnoDB o motor escolhido neste caso.

Crie bancos de dados, tabelas e configure campos em uma sessão SQL

O código do exemplo a seguir reúne os pedidos, os passos que teriam que ser seguidos, para criar um banco de dados com tabela mínima.

Crie cópias de backup de bancos de dados

Uma vez configurado o servidor e criado o banco de dados e suas tabelas, tudo estará pronto para armazenar as informações obtidas pelos nós IoT. Embora o foco desta série de artigos não inclua a manutenção, há uma questão administrativa crítica que é importante abordar: backups. Da maioria dos gerentes, incluindo phpMyAdmin y banco de trabalho mysql, cópias de backup podem ser feitas e restauradas, mas é comum incluí-las em um script que as automatiza (provavelmente junto com a configuração e muitos outros documentos), por isso é mais conveniente usar a ferramenta MySQLDump, um cliente que geralmente faz parte de uma instalação convencional de MySQL, ou alguma alternativa como Dumper de dados MySQL O que o pedido inclui? mydumper para fazer a cópia e myloader para restaurá-lo

MySQLDump

O formato do pedido mysqldump É muito simples, basta indicar o nome de usuário user, a senha password e o banco de dados que você deseja copiar ou --all-databases para fazer backup de todos os bancos de dados como no exemplo a seguir:

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

O exemplo anterior gera o documento copia.sql que contém os pedidos SQL (ou seja, texto) necessário para reconstruir todos os bancos de dados. Quando salva em formato de texto, a cópia ocupa muito mais do que o necessário, por isso também costuma ser compactada para economizar espaço no dispositivo onde está armazenada.

O backup gerado com o comando de exemplo poderia ser restaurado caso as informações fossem perdidas devido a um erro no comando abaixo que executa as operações SQL do documento copia.sql

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

Dumper de dados MySQL

Embora as operações anteriores sejam suficientes, é muito comum usar Dumper de dados MySQL, já quase um padrão para seu desempenho, embora não faça parte das ferramentas básicas incluídas no MySQL

A seguir estão as opções de mydumper mais utilizados que, logicamente, devem ser escritos como parte do mesmo comando, separados por espaços, embora neste texto tenham sido separados em linhas para facilitar a leitura:

--host polaridad.es “polaridad.es” é o nome do servidor de banco de dados
--port 3306 "3306" é o número da porta na qual o servidor escuta (por padrão é 3306)
--user pelaez "pelaez" é o nome do usuário com quem o banco de dados é acessado
--password 1234 “1234” é a senha do usuário com quem o banco de dados é acessado
--database temperaturas “temperaturas” é o nome do banco de dados cujo backup está sendo feito
--no-locks não bloqueie o banco de dados durante a cópia (por padrão ele bloqueia)
--build-empty-files copie também tabelas vazias
--compress-input comprimir entrada
--compress compactar a saída (o backup resultante)

Para restaurar o backup obtido com mydumper veja um myloader que é usado principalmente com as seguintes opções, que devem ser incluídas na mesma ordem separadas por espaços:

--host polaridad.es “polaridad.es” é o nome do servidor de banco de dados
--port 3306 "3306" é o número da porta na qual o servidor escuta (por padrão é 3306)
--user pelaez "pelaez" é o nome do usuário com quem o banco de dados é acessado
--password 1234 “1234” é a senha do usuário com quem o banco de dados é acessado
--directory=copia_iot «iot_copy» é a pasta onde está localizada a cópia gerada com mydumper
--overwrite-tables sobrescrever tabelas mesmo que elas já existam
--verbose 3 “3” é o grau de informação do processo (maior, mais mensagens)
-C usar compactação no fluxo de dados

O próximo (e último) artigo desta série explica como usar a linguagem de programação PHP para armazenar em bancos de dados as informações obtidas por dispositivos conectados à Internet das Coisas que foram comentados neste texto.

Postar Comentário

Você pode ter perdido