Siapkan database MySQL atau MariaDB
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.
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.
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
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 MySQLTO '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
- mengakses basis data «
-
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.
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
membuat database “suhu”. Untuk menghindari kesalahan, formulir dapat digunakan temperaturas
;CREATE DATABASE IF NOT EXISTS
yang akan membuat database “temperature_database” hanya jika saat ini tidak ada.base_datos_temperaturas
;
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 menjadi bidang yang dipilih sebagai indeks.ID
)
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.
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;
|
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.
Posting