MySQL veya MariaDB veritabanını hazırlayın
Veritabanı sunucusunu yapılandırma
Hizmet seti kurulduktan sonra LAMBA, WAMP, MAMP o XAMPP Serinin ilk makalesinde açıklandığı gibi veya sunucu görevi görecek makineye ilgili hizmetleri uygulayan uygulamaların toplamı kurulduktan sonra, veritabanı sunucusu yapılandırmasının bazı yönlerini ayarlamak gerekir. MySQL Nesnelerin İnterneti cihazlarından veri depolamak için web sunucusunda kullanılacak veritabanlarının ve tabloların oluşturulması.
Eğer halka açık bir sunucu kullanılıyorsa, sağlayıcı, operasyondaki güvenliği güçlendirmek amacıyla kullanıcı ile veritabanının "gerçek" konfigürasyonu arasında aracılık edecek bir tür panel sağlamış olacaktır. Eğer öyleyse, bu sağlayıcının sunduğu talimatlara başvurmanız gerekecektir. Üçüncü bir tarafın tesislerinde barındırılan gerçek veya sanal sunucu durumunda, sağlayıcının bunu yönetmesi durumunda benzer bir durum ortaya çıkabilir; Yönetilmeyen bir sunucuyla sözleşme yapılmışsa (sağlayıcı tarafından, kullanıcı tarafından yönetilir), aşağıdaki bilgiler geçerli olacaktır.
Önemli olan veri tabanı yöneticisine verilmesi gereken talimatları bilmek olduğundan ve bunun projenin konusu olacak Nesnelerin İnterneti için cihazları desteklemek amacıyla bir araç olarak kullanıldığı anlaşıldığından, Veritabanı sunucusu üzerindeki çalışmalar ara sıra olacağından konsolu kullanmak yeterlidir. Yönetimin iş yükü artmaya başlarsa buna değer olabilir, çünkü sunucunun kendisinde popüler bir yönetici kullanmak daha uygundur. phpMyAdmin (bir web tarayıcısından) veya yerel olarak, elbette veritabanı sunucusuna erişmesine rağmen, aşağıdaki gibi bir yöneticiyle MySQL Çalışma Tezgahı ileri seviyede performans sergileyeceğiniz yer GUI anlatılacak operasyonlar ve bu makalenin dışında kalan ve bir diziyi hak eden daha birçok operasyon.
İle yapılabilecek az çok otomatik işlemlerin yanı sıra MySQL Çalışma Tezgahı sunucuda, veritabanlarında veya tablolarda, tam komut dosyalarını veya bağımsız komutları yazıp çalıştırarak görevleri "manuel olarak" gerçekleştirmek de mümkündür. SQL. Aletle aynı MySQL Çalışma Tezgahı, SQL ayrı bir bölüm gerektirir ve IoT web çalışmasının gerçekleştirilen kısmı daha ciddi bir dikkat gerektirdiğinde derinlemesine bilmek önemli olacaktır. arka uç burada açıklanandan daha fazlası.
Her durumda ve elbette işlenmekte olan IoT veritabanının gerekli yapılandırmasını çözmek için konsol kullanılabilir.
Ana MySQL yöneticisi olan kökü yapılandırın
Veritabanı sunucusu kendi makinesindeyse yapılacak ilk şey, hizmet yöneticisi izinlerini, bu ayrıcalıkları kullanarak diğer kullanıcıları (sırasıyla bu kullanıcılara sahip olabilecek) ve uygunsa veritabanlarını ve tabloları oluşturabilecek şekilde yapılandırmaktır. Nesnelerin İnterneti sisteminin ihtiyaç duyduğu bilgilerin depolanacağı yer.
Hizmet setinin veya sunucunun kurulum sürecine katılmak önemlidir. MySQL, takip edilen sürece bağlı olarak, çoğu durumda bu adımı ve diğer adımları uygulamaktan yükleyicinin kendisi sorumlu olacağından, konfigürasyonu değiştirmek istediğiniz durumlar dışında bunları tekrarlamanıza gerek kalmayacaktır.
Bu görevleri gerçekleştirmek için genellikle konsolla çalışırsınız. MySQL yönetici olarak. Bu moda erişmek için şu komutu kullanın: mysql -u root -p
o sudo mysql -u root
ilk kez kullanılıyorsa ve kurulum sırasında kullanıcı yapılandırılmamıştır root
Siparişte mysql -u root -p
seçeneğiyle belirtilir -u
Kullanıcı adı (root
) ve seçeneğiyle -p
(şifre) konsola erişirken anahtarın istenmesi gerektiğini MySQL. Sistem konsoluna dönmek için şu komutu kullanabilirsiniz: quit
dışarı çıkmak
Yukarıdaki ekran görüntüsünde görüldüğü gibi konsoldan çıkmadan önce MySQL, kullanıcının ayrıcalıklarını ayarlamak için root
komut kullanıldı:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
hangi:
- tüm ayrıcalıklar verildi
GRANT ALL PRIVILEGES
- tüm veritabanlarındaki tüm tablolarda
ON *.*
- kullanıcıya
root
sunucuyu çalıştıran makineden erişim MySQLTO 'root'@'localhost'
- 1234'ü şifre olarak kullanmak
IDENTIFIED BY '1234'
- diğer kullanıcılara yetki verme izniyle
WITH GRANT OPTION
Veritabanının uzaktan yönetilebilmesi için ilgili kullanıcıya başka lokasyonlardan ayrıcalıklar verilmesi gerekmektedir. Önceki örnekte buna izin veriliyordu. root
veritabanı sunucusunun çalıştığı makineden erişilir (localhost
) ile 'root'@'localhost'
, kullanıldıysa 'root'@'%'
Herhangi bir makineden erişime izin verilecektir.
Sistemde yönetici ayrıcalıklarınız varsa kullanıcı şifresini yeniden oluşturabilirsiniz. root
de MySQL. Bunu yapmak için hizmeti durdurmak gerekir (mysql
o mysqld
, dağıtıma bağlı olarak), anahtarsız önyükleme yapın, yeni anahtarı ayarlayın root
ve yeniden başlatın. Şifresiz erişim sağlanarak yukarıda açıklanan ayrıcalıkların verilmesi de mümkündür.
- hizmeti durdur
sudo /etc/init.d/mysql stop
- başlatmak MySQL anahtarsız ve konsolun kilidini açma
sudo mysqld_safe --skip-grant-tables &
- « olarak erişim
root
»mysql -u root
- Şifreyi değiştir:
- veritabanına erişin «
mysql
"USE mysql;
- atamak "
root
» «1234» anahtarı:UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
- yeni ayrıcalıkları uygulayın:
FLUSH PRIVILEGES;
- çıkış konsolu
mysql
ve sisteme geri dönün:quit
- veritabanına erişin «
-
Servisi yeniden başlat
sudo /etc/init.d/mysql restart
Uzak veritabanı erişimini yapılandırma
Güvenlik nedeniyle, veritabanı yöneticisinin ilk konfigürasyonu MySQL uzaktan erişime izin vermiyor, değiştirmek için normalde konfigürasyon belgesini düzenlemek gerekiyor my.cnf
genellikle rota üzerinde bulunur /etc/mysql
.
Kullanıldıysa MariaDBartık "daha özgür" versiyonu olan MySQLelbette my.cnf
bir bağlantı olacak /etc/alternatives/my.cnf
bu da sırasıyla yapılandırmayı yükleyecektir. !includedir
, rota belgelerinden /etc/mysql/mariadb.conf.d
muhtemelen belgeden 50-server.cnf
Veritabanı sunucusunun uzak isteklere katılmamak için kullandığı kaynak, yalnızca belirli bir konumdan gelen istekleri "dinlemekten" oluşur. IP adresi parametrenin değeri olarak ifade edilir bind-address
(klasik olanın yerine geçer) skip-networking
) Adres ne zaman 127.0.0.1
(localhost
) yalnızca yerel makineden gelen isteklere yanıt verilir. ile yorumlanırsa #
veya değer ise 0.0.0.0
, her adrese hizmet vermekteyiz. Harici erişime izin vermek için en güvenli şey, IP adresi Erişildiği bilgisayarın (herkese açık veya özel olabilir), genellikle şöyle bir şey: bind-address = 192.168.1.74
. Sizin durumunuzda, bu ekipman bir tünel (ile yönlendiriliyor SSH) veya yürüyüş yolu olarak (ile çekirdek ip tabloları) sunucunun ağın kontrollü bir alanının dışına çıkmasını önlemek için.
Yukarıdaki ekran görüntüsünde düzenlendiğini görebilirsiniz my.cnf
yapılandırma ile MySQL siparişi kullanarak sudo nano /etc/mysql/my.cnf
. İle çalışma durumunda MariaDB Her zamanki konfigürasyonla, sipariş şöyle bir şey olurdu: sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
. Yukarıda belirtildiği gibi, yönetici ayrıcalıklarına sahip erişim sağlandığında, GUI olarak MySQL Çalışma Tezgahı düzenli veritabanı yönetimi için.
Veritabanlarını oluşturun
Veritabanı sunucusu yapılandırıldıktan sonra IoT verilerinin depolanacağı veritabanları ve tablolar oluşturulabilir. Bunu yapmak için komutları kullanabilirsiniz SQL konsoldan veya GUI bir yöneticinin.
Emir CREATE DATABASE
“sıcaklıklar” veritabanını oluşturur Hataları önlemek için form kullanılabilir temperaturas
;CREATE DATABASE IF NOT EXISTS
bu, yalnızca şu anda mevcut değilse "temperature_database" veritabanını oluşturur.base_datos_temperaturas
;
Tabloları oluşturun
Farklı veritabanlarında aynı ada sahip tablolar olabileceğinden, bunlardan birine, adından önce veritabanının adını koyarak ve her ikisini de bir nokta ile ayırarak (şu gibi) başvurabilirsiniz: base_datos.tabla
Bu gösterim aynı zamanda alanların adlarını da kapsayacak şekilde genişletilebilir. base.tabla.campo
Bir tablo üzerinde çalışırken (bu durumda, oluştururken) veritabanı adı atlanırsa, son seçilene referans verildiği kabul edilir. Belirli bir tanesini açıkça seçmek için şu komutu kullanabilirsiniz: USE
ve adınızı belirtin USE
base_datos_temperaturas
;
Veritabanlarında tablolar oluştururken, genellikle onları oluşturan alanların bilgileri de aynı işlemde eklenir (ancak bunları daha sonra değiştirmek de mümkündür).Veritabanında yapıldığı gibi, tablo ancak cümleyi ekleyerek mevcut değil IF NOT EXISTS
veya tam tersine, tabloyu oluşturmadan önce yalnızca kullanarak mevcutsa sildiğinizden emin olun. DROP TABLE IF EXISTS
valor_temperaturas
;
Komutlar veya prosedürlerle çakışabilecek tablo veya veritabanlarının adlarına izin vermek için, bazen ters virgül olarak da adlandırılan ciddi vurgu işareti, adı çevrelemek ve komutlardaki çakışmaları veya hataları önlemek için kullanılabilir. SQL.
Alanları tanımlayın
Tablo oluşturulurken eklenen alanlar parantez içine alınarak ve depoladıkları veri türü belirtilerek belirtilir. Nesnelerin İnterneti'ne bağlı cihazlardan gelen bilgileri depolamak için genellikle bir veritabanında kullanılan veri türleri tamsayılardır (INT
o BIGINT
) ondalık sayılar (DECIMAL
, DOUBLE
o FLOAT
) zamanın (DATE
, TIME
, DATETIME
o TIMESTAMP
) ve metin (esas olarak VARCHAR
buna benzer başkaları da olsa TEXT
ancak IoT için kullanılmazlar) Veri türünden sonra parantez içinde verinin uzunluğu ve varsa formatı veya kesinliği eklenir.
Toplayarak AUTO_INCREMENT
Bir alanın tanımı, veri tabanı yöneticisine, başka hiçbir şey belirtilmemişse, yeni bir kayıt oluştururken sonuncunun değeri artı buna karşılık gelen artışın otomatik olarak saklanması gerektiğini (normalde 1'dir) belirtir. Kayıtların sayısal indeksleri olarak kullanılan alanlar.
Kod NOT NULL
kayıttaki bir alanın boş olamayacağını, bir değer saklaması gerektiğini belirtir.
Kullanırken DEFAULT
Bir tablonun alanı oluşturulurken belirtilir MySQL Yeni bir kayıt eklerken veya değiştirirken başka bir değerin açıkça belirtilmemesi koşuluyla alan için varsayılan bir değer. Bu durumda IoT değerlerini izlemek için sıklıkla kullanılan bir varsayılan değer şudur: CURRENT_TIMESTAMP
bu, yeni bir kayıt oluştururken geçerli saati bir alana otomatik olarak kaydetmenize olanak tanır, böylece veriler zaman içinde otomatik olarak tanımlanır.
Veritabanının performansını optimize etmek için, tablo alanlarının tanımının sonuna cümleyle birlikte indeks olarak kullanılan bir alanın eklenmesi uygundur. PRIMARY KEY (
Kimlik, dizin olarak seçilen alandır.ID
)
Bir tablonun tanımının sonunda, parametre değeri olarak tablonun yönetildiği veritabanı motorunu belirtebilirsiniz. ENGINE
format ile ENGINE=InnoDB;
olma InnoDB
bu durumda seçilen motor.
SQL oturumunda veritabanları, tablolar oluşturun ve alanları yapılandırın
Aşağıdaki örnekteki kod, minimum tabloya sahip bir veritabanı oluşturmak için yapılması gereken siparişleri ve adımları bir araya getirir.
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;
|
Veritabanlarının yedek kopyalarını oluşturun
Sunucu yapılandırıldıktan ve veritabanı ile tabloları oluşturulduktan sonra her şey IoT düğümleri tarafından elde edilen bilgileri depolamaya hazır olacaktır. Her ne kadar bu makale serisinin odak noktası bakım içermese de ele alınması gereken kritik bir yönetim sorunu vardır: yedeklemeler. Çoğu yöneticiden, dahil phpMyAdmin y MySQL Çalışma Tezgahı, yedek kopyalar oluşturulabilir ve geri yüklenebilir, ancak bunları otomatikleştiren bir komut dosyasına dahil etmek yaygındır (muhtemelen yapılandırma ve diğer birçok belgeyle birlikte), bu nedenle aracı kullanmak daha uygundur MySQLDump, genellikle geleneksel bir kurulumun parçası olan bir istemci MySQLveya bunun gibi bir alternatif MySQL Veri Damper'ı Sipariş neleri içeriyor? mydumper
kopyalamayı yapmak ve myloader
onu geri yüklemek için
MySQLDump
Sipariş formatı mysqldump
Çok basit, sadece kullanıcı adını belirtmeniz yeterli user
, Şifre password
ve kopyalamak istediğiniz veritabanı veya --all-databases
aşağıdaki örnekte olduğu gibi tüm veritabanlarını yedeklemek için:
mysqldump --opt --user=pelaez --password=1234 --all-databases > copia.sql
Önceki örnek belgeyi oluşturur copia.sql
siparişleri içeren SQL (yani metin) tüm veritabanlarını yeniden oluşturmak için gerekli. Metin biçiminde kaydedildiğinde, kopya gereğinden çok daha fazla yer kaplar, bu nedenle genellikle depolandığı cihazda yer kazanmak için sıkıştırılır.
Örnek komutla oluşturulan yedekleme, işlemleri yürüten aşağıdaki komutta meydana gelen bir hata nedeniyle bilgilerin kaybolması durumunda geri yüklenebilir. SQL belgenin copia.sql
mysql --user=pelaez --password=1234 < copia.sql
MySQL Veri Damper'ı
Önceki işlemler yeterli olsa da kullanımı oldukça yaygındır. MySQL Veri Damper'ı, dahil edilen temel araçların bir parçası olmasa da performansı için zaten neredeyse bir standarttır. MySQL
Aşağıdaki seçenekler şunlardır: mydumper
mantıksal olarak aynı komutun bir parçası olarak boşluklarla ayrılmış olarak yazılması gerekenler kullanılır, ancak bu metinde okumayı kolaylaştırmak için satırlara ayrılmıştır:
--host polaridad.es
“polaridad.es” veritabanı sunucusunun adıdır
--port 3306
"3306", sunucunun dinlediği bağlantı noktası numarasıdır (varsayılan olarak 3306'dır)
--user pelaez
"pelaez" veritabanına erişilen kullanıcının adıdır
--password 1234
"1234" veritabanına erişilen kullanıcının şifresidir
--database temperaturas
“sıcaklıklar” yedeklenen veritabanının adıdır
--no-locks
kopyalama sırasında veritabanını kilitlemeyin (varsayılan olarak kilitlenir)
--build-empty-files
boş tabloları da kopyala
--compress-input
girişi sıkıştır
--compress
çıktıyı sıkıştır (ortaya çıkan yedekleme)
İle alınan yedeği geri yüklemek için mydumper
kullanılmış myloader
öncelikli olarak aşağıdaki seçeneklerle birlikte kullanılır ve boşluklarla ayrılmış olarak aynı sırada yer alması gerekir:
--host polaridad.es
“polaridad.es” veritabanı sunucusunun adıdır
--port 3306
"3306", sunucunun dinlediği bağlantı noktası numarasıdır (varsayılan olarak 3306'dır)
--user pelaez
"pelaez" veritabanına erişilen kullanıcının adıdır
--password 1234
"1234" veritabanına erişilen kullanıcının şifresidir
--directory=copia_iot
«iot_copy», oluşturulan kopyanın bulunduğu klasördür mydumper
--overwrite-tables
Zaten mevcut olsalar bile tabloların üzerine yaz
--verbose 3
"3" sürecin bilgi derecesidir (daha yüksek, daha fazla mesaj)
-C
veri akışında sıkıştırmayı kullan
Bu serideki bir sonraki (ve son) makale şunları açıklıyor: Nesnelerin İnterneti'ne bağlı cihazların elde ettiği bilgileri veritabanlarında saklamak için PHP programlama dili nasıl kullanılır? Bu metinde bahsedilenler.
Yorum Ekle