Siapkan database MySQL atau MariaDB

Siapkan database MySQL atau MariaDB

Siapkan database MySQL atau MariaDB

Server web IoTServer Web HTTP POST IoTBasis Data MySQL. Server web IoTServer Web IoT Bahasa PHP

Konfigurasikan server basis data

Setelah kumpulan layanan diinstal LAMP, WAMP, MAMP o XAMPP Seperti yang dijelaskan dalam artikel pertama dari seri ini atau hanya setelah menginstal pada mesin yang akan bertindak sebagai server jumlah aplikasi yang mengimplementasikan layanan terkait, maka perlu untuk menyesuaikan beberapa aspek konfigurasi server database. MySQL serta membuat database dan tabel yang akan digunakan di web server untuk menyimpan data dari perangkat Internet of Things.

Jika server publik digunakan, penyedia pasti telah menyediakan beberapa jenis panel untuk memediasi antara pengguna dan konfigurasi database "sebenarnya" untuk memperkuat keamanan dalam pengoperasian. Jika demikian, Anda harus mengacu pada petunjuk yang ditawarkan penyedia ini. Dalam kasus server nyata atau virtual yang dihosting di fasilitas pihak ketiga, keadaan serupa mungkin timbul ketika penyedia mengelolanya; Jika server yang tidak dikelola telah dikontrak (oleh penyedia, dikelola oleh pengguna), informasi berikut akan berlaku.

Karena yang terpenting adalah mengetahui instruksi yang harus diberikan kepada pengelola database dan dipahami bahwa instruksi tersebut digunakan sebagai sarana untuk mendukung perangkat Internet of Things, yang akan menjadi objek proyek, mungkin saja cukup menggunakan konsol karena pekerjaan pada server database itu sendiri akan dilakukan sesekali. Jika beban kerja manajemen mulai meningkat, mungkin ada gunanya, karena akan lebih nyaman menggunakan manajer di server itu sendiri, seperti yang populer. phpMyAdmin (dari browser web) atau secara lokal, meskipun tentu saja mengakses server database, dengan administrator seperti Meja Kerja MySQL dari mana untuk tampil secara lanjutan GUI operasi yang akan dijelaskan dan banyak lainnya di luar artikel ini dan layak mendapatkan keseluruhan seri.

Panel Admin Meja Kerja MySQL

Selain operasi otomatis yang kurang lebih dapat dilakukan Meja Kerja MySQL di server, database, atau tabel juga dimungkinkan untuk melakukan tugas "secara manual" dengan menulis dan menjalankan skrip lengkap atau perintah independen di SQL. Sama halnya dengan alatnya Meja Kerja MySQL, SQL memerlukan bab tersendiri dan yang penting untuk diketahui secara mendalam ketika bagian dari pekerjaan web IoT yang dilakukan melibatkan perhatian yang lebih serius terhadap backend daripada yang dijelaskan di sini.

Editor Kueri SQL Meja Kerja MySQL

Bagaimanapun, dan tentu saja untuk menyelesaikan konfigurasi yang diperlukan dari database IoT yang sedang diproses, konsol dapat digunakan.

Konfigurasikan root, administrator MySQL utama

Jika server database berada pada mesinnya sendiri, hal pertama yang harus dilakukan adalah mengkonfigurasi izin administrator layanan agar dapat membuat, dengan menggunakan hak istimewa tersebut, pengguna lain (yang pada gilirannya mungkin memilikinya) dan, jika berlaku, database dan tabel di mana untuk menyimpan informasi yang dibutuhkan sistem Internet of Things.

Penting untuk memperhatikan proses instalasi kumpulan layanan atau server MySQL, tergantung pada proses yang diikuti, karena, dalam banyak kasus, penginstal sendiri yang akan bertanggung jawab untuk melakukan langkah ini dan langkah lainnya dan tidak perlu mengulanginya kecuali jika Anda ingin mengubah konfigurasi.

Untuk melakukan tugas-tugas ini, Anda biasanya bekerja dengan konsol. MySQL sebagai administrator. Untuk mengakses mode ini, gunakan perintah mysql -u root -p o sudo mysql -u root jika digunakan pertama kali dan pada saat instalasi belum dikonfigurasi pengguna root

Mengonfigurasi pengguna root MySQL dari konsol

Masuk ke dalam Pesanan mysql -u root -p ditunjukkan dengan pilihan -u nama pengguna (root) dan dengan opsi -p (kata sandi) yang kuncinya harus diminta saat mengakses konsol MySQL. Untuk kembali ke konsol sistem Anda dapat menggunakan perintah quit untuk pergi keluar

Seperti yang terlihat pada screenshot di atas, sebelum keluar dari konsol MySQL, untuk mengatur hak istimewa pengguna root perintah telah digunakan:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
di mana:

  • semua hak istimewa diberikan GRANT ALL PRIVILEGES
  • di semua tabel di semua database ON *.*
  • kepada pengguna root mengakses dari mesin yang menjalankan server MySQL TO 'root'@'localhost'
  • menggunakan 1234 sebagai kata sandi IDENTIFIED BY '1234'
  • dengan izin untuk mengotorisasi pengguna lain WITH GRANT OPTION

Untuk mengelola database dari jarak jauh, hak istimewa harus diberikan kepada pengguna terkait dari lokasi lain. Pada contoh sebelumnya, hal ini diperbolehkan root diakses dari mesin tempat server database berjalan (localhost) dengan 'root'@'localhost', jika digunakan 'root'@'%' Akses akan diizinkan dari mesin mana pun.

Jika Anda memiliki hak administrator pada sistem, Anda dapat membuat ulang kata sandi pengguna root de MySQL. Untuk melakukannya, layanan perlu dihentikan (mysql o mysqld, tergantung pada distribusinya), boot tanpa kunci, atur kunci baru root dan mulai ulang. Dengan mengakses tanpa kata sandi, dimungkinkan juga untuk memberikan hak istimewa yang dijelaskan di atas.

  • menghentikan layanan sudo /etc/init.d/mysql stop
  • melempar MySQL tanpa kunci dan membuka kunci konsol sudo mysqld_safe --skip-grant-tables &
  • akses sebagai «root» mysql -u root
  • ubah kata sandi:
    • mengakses basis data «mysql»: USE mysql;
    • ditugaskan kepada "root» kunci «1234»: UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
    • terapkan hak istimewa baru: FLUSH PRIVILEGES;
    • keluar dari konsol mysql dan kembali ke sistem: quit
  • restart layanan sudo /etc/init.d/mysql restart

Konfigurasikan akses basis data jarak jauh

Untuk alasan keamanan, konfigurasi awal manajer database MySQL tidak mengizinkan akses jarak jauh, untuk mengubahnya perlu mengedit dokumen konfigurasi, biasanya my.cnf, yang biasanya ditemukan di rute tersebut /etc/mysql.

Jika digunakan MariaDB, yang sekarang merupakan versi "lebih bebas", dari MySQL, tentu my.cnf akan menjadi tautan ke /etc/alternatives/my.cnf yang pada gilirannya akan memuat konfigurasi menggunakan !includedir, dari dokumen rute /etc/mysql/mariadb.conf.d, mungkin dari dokumen 50-server.cnf

Sumber daya yang digunakan server database untuk tidak melayani permintaan jarak jauh terdiri dari "mendengarkan" hanya permintaan yang dibuat dari lokasi tertentu. alamat IP yang dinyatakan sebagai nilai parameter bind-address (yang menggantikan yang klasik skip-networking) Ketika alamatnya 127.0.0.1 (localhost) hanya permintaan dari mesin lokal yang dilayani. Jika dikomentari dengan # atau jika nilainya 0.0.0.0, kami melayani alamat mana pun. Untuk mengizinkan akses eksternal, hal yang paling aman adalah menunjukkan alamat IP (yang bisa publik atau pribadi) dari komputer yang diaksesnya, biasanya seperti ini bind-address = 192.168.1.74. Dalam kasus Anda, peralatan ini dapat bertindak sebagai a terowongan (mengarahkan dengan SSH) atau sebagai jalan setapak (dengan tabel ip inti) untuk menghindari pemaparan server di luar area jaringan yang dikontrol.

Konfigurasi database MySQL dengan mengedit file my.cnf (di dll mysql)

Pada tangkapan layar di atas Anda dapat melihat bahwa itu telah diedit my.cnf dengan konfigurasi MySQL menggunakan pesanan sudo nano /etc/mysql/my.cnf. Dalam hal bekerja dengan MariaDB Dengan konfigurasi biasa, urutannya akan seperti ini sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf. Seperti disebutkan di atas, setelah ada akses dengan hak administratif, a GUI sebagai Meja Kerja MySQL untuk manajemen basis data reguler.

Buat database

Setelah server database dikonfigurasi, database dan tabel untuk menyimpan data IoT dapat dibuat. Untuk melakukan ini, Anda dapat menggunakan perintah SQL dari konsol atau dari GUI dari seorang manajer.

Urutan CREATE DATABASE temperaturas; membuat database “suhu”. Untuk menghindari kesalahan, formulir dapat digunakan CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; yang akan membuat database “temperature_database” hanya jika saat ini tidak ada.

Buat tabel

Karena dalam database yang berbeda mungkin terdapat tabel dengan nama yang sama, Anda dapat merujuk ke salah satu tabel tersebut dengan mengawali namanya dengan nama database dan memisahkan keduanya dengan tanda titik, seperti base_datos.tabla Notasi ini juga dapat diperluas ke nama field base.tabla.campo

Jika nama database dihilangkan saat mengoperasikan tabel (dalam hal ini, saat membuatnya) dianggap bahwa tabel yang terakhir dipilih akan direferensikan. Untuk memilih secara spesifik, Anda dapat menggunakan perintah USE dan sebutkan namamu USE base_datos_temperaturas;

Saat membuat tabel dalam database, dalam operasi yang sama, informasi dari bidang yang membentuknya biasanya ditambahkan (walaupun dimungkinkan juga untuk mengubahnya nanti). Seperti yang dilakukan dengan database, tabel hanya dapat dibuat jika memang demikian. tidak ada menambahkan klausa IF NOT EXISTS atau sebaliknya, pastikan untuk menghapus tabel sebelum membuatnya hanya jika ada yang menggunakan DROP TABLE IF EXISTS valor_temperaturas;

Untuk mengizinkan nama tabel atau database yang dapat bertentangan dengan perintah atau prosedur, tanda aksen berat, terkadang disebut koma terbalik, dapat digunakan untuk mengapit nama dan menghindari konflik atau kesalahan dalam perintah. SQL.

Tentukan bidangnya

Bidang yang ditambahkan saat membuat tabel ditunjukkan dengan mengapitnya dalam tanda kurung dan menunjukkan jenis data yang disimpannya. Tipe data yang biasanya digunakan dalam database untuk menyimpan informasi dari perangkat yang terhubung ke Internet of Things adalah bilangan bulat (INT o BIGINT) desimal (DECIMAL, DOUBLE o FLOAT) waktu (DATE, TIME, DATETIME o TIMESTAMP) dan teks (terutama VARCHAR padahal ada juga yang serupa TEXT tetapi tidak digunakan untuk IoT) Setelah tipe data, dan dalam tanda kurung, panjang data dan, jika berlaku, format atau presisi ditambahkan.

Dengan menambahkan AUTO_INCREMENT Definisi suatu field menunjukkan kepada manajer database bahwa, jika tidak ada indikasi lain, ketika membuat record baru, nilai dari record terakhir ditambah kenaikan yang sesuai harus disimpan secara otomatis (biasanya 1). bidang yang digunakan sebagai indeks numerik dari catatan.

Kode NOT NULL menunjukkan bahwa suatu bidang dalam catatan tidak boleh kosong, ia harus menyimpan beberapa nilai.

Saat menggunakan DEFAULT Saat membuat bidang tabel, itu ditunjukkan MySQL nilai default untuk bidang dengan ketentuan bahwa saat menambahkan catatan baru atau memodifikasinya, nilai lain tidak ditunjukkan secara jelas. Nilai default yang sering digunakan, dalam hal ini untuk memantau nilai IoT, adalah CURRENT_TIMESTAMP yang memungkinkan Anda mencatat waktu saat ini secara otomatis dalam suatu bidang saat membuat catatan baru, sehingga data secara otomatis diidentifikasi tepat waktu.

Untuk mengoptimalkan kinerja database, akan lebih mudah untuk menyertakan di akhir definisi bidang tabel yang digunakan sebagai indeks dengan klausa PRIMARY KEY (ID) ID menjadi bidang yang dipilih sebagai indeks.

Di akhir definisi tabel, Anda dapat menunjukkan mesin database yang dikelola sebagai nilai parameter ENGINE dengan format ENGINE=InnoDB; sedang InnoDB mesin yang dipilih dalam kasus ini.

Buat database, tabel, dan konfigurasikan bidang dalam sesi SQL

Kode pada contoh berikut menyatukan perintah-perintah, langkah-langkah yang harus diambil, untuk membuat database dengan tabel minimum.

Membuat salinan cadangan database

Setelah server dikonfigurasi dan database serta tabelnya dibuat, semuanya akan siap untuk menyimpan informasi yang diperoleh oleh node IoT. Meskipun fokus rangkaian artikel ini tidak mencakup pemeliharaan, ada satu masalah administratif penting yang penting untuk diatasi: pencadangan. Dari sebagian besar manajer, termasuk phpMyAdmin y Meja Kerja MySQL, salinan cadangan dapat dibuat dan dipulihkan tetapi biasanya disertakan dalam skrip yang mengotomatiskannya (mungkin bersama dengan konfigurasi dan banyak dokumen lainnya) sehingga lebih nyaman menggunakan alat ini MySQLDump, klien yang biasanya merupakan bagian dari instalasi konvensional MySQL, atau alternatif lain seperti Pembuangan Data MySQL Apa yang termasuk dalam pesanan? mydumper untuk membuat salinan dan myloader untuk memulihkannya

MySQLDump

Format pesanan mysqldump Caranya sangat sederhana, Anda hanya perlu memasukkan nama pengguna user, Kata Sandi password dan database yang ingin Anda salin atau --all-databases untuk membackup semua database seperti pada contoh berikut:

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

Contoh sebelumnya menghasilkan dokumen copia.sql yang berisi perintah SQL (yaitu teks) diperlukan untuk membangun kembali semua database. Saat disimpan dalam format teks, salinannya memakan waktu lebih dari yang diperlukan, itulah sebabnya salinan tersebut biasanya juga dikompresi untuk menghemat ruang pada perangkat tempat salinan tersebut disimpan.

Cadangan yang dihasilkan dengan perintah contoh dapat dipulihkan jika informasi hilang karena kesalahan dengan perintah di bawah ini yang menjalankan operasi SQL dari dokumen tersebut copia.sql

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

Pembuangan Data MySQL

Meskipun operasi sebelumnya sudah cukup, ini sangat umum digunakan Pembuangan Data MySQL, sudah hampir menjadi standar kinerjanya meskipun bukan bagian dari alat dasar yang disertakan MySQL

Berikut ini adalah pilihan dari mydumper paling banyak digunakan yang, secara logis, harus ditulis sebagai bagian dari perintah yang sama, dipisahkan dengan spasi, meskipun dalam teks ini telah dipisahkan menjadi beberapa baris untuk memudahkan pembacaan:

--host polaridad.es “polaridad.es” adalah nama server database
--port 3306 "3306" adalah nomor port yang didengarkan server (secara default adalah 3306)
--user pelaez "pelaez" adalah nama pengguna yang mengakses database
--password 1234 "1234" adalah kata sandi pengguna yang mengakses database
--database temperaturas "suhu" adalah nama database yang dicadangkan
--no-locks jangan mengunci database selama penyalinan (secara default terkunci)
--build-empty-files juga menyalin tabel kosong
--compress-input masukan kompres
--compress kompres output (cadangan yang dihasilkan)

Untuk memulihkan cadangan yang diperoleh dengan mydumper itu digunakan myloader yang terutama digunakan dengan opsi berikut, yang harus disertakan dalam urutan yang sama dan dipisahkan oleh spasi:

--host polaridad.es “polaridad.es” adalah nama server database
--port 3306 "3306" adalah nomor port yang didengarkan server (secara default adalah 3306)
--user pelaez "pelaez" adalah nama pengguna yang mengakses database
--password 1234 "1234" adalah kata sandi pengguna yang mengakses database
--directory=copia_iot «iot_copy» adalah folder tempat salinan yang dihasilkan berada mydumper
--overwrite-tables menimpa tabel meskipun sudah ada
--verbose 3 "3" adalah tingkat informasi proses (lebih tinggi, lebih banyak pesan)
-C menggunakan kompresi pada aliran data

Artikel berikutnya (dan terakhir) dalam seri ini menjelaskan cara menggunakan bahasa pemrograman PHP untuk menyimpan informasi yang diperoleh perangkat yang terhubung ke Internet of Things dalam database yang telah dibicarakan dalam teks ini.

Anda mungkin melewatkannya