MySQL veya MariaDB veritabanını hazırlayın

MySQL veya MariaDB veritabanını hazırlayın

MySQL veya MariaDB veritabanını hazırlayın

IoT web sunucusuHTTP POST IoT Web SunucusuMySQL Veritabanı. IoT web sunucusuPHP Dili IoT Web Sunucusu

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.

MySQL Workbench Yönetici Paneli

İ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ı.

MySQL Workbench SQL Sorgu Düzenleyicisi

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

MySQL root kullanıcısını konsoldan yapılandırma

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 MySQL TO '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şimroot» 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
  • 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.cnfgenellikle 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.dmuhtemelen 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.

My.cnf dosyasını (etc mysql içinde) düzenleyerek MySQL veritabanı yapılandırması

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 temperaturas; “sıcaklıklar” veritabanını oluşturur Hataları önlemek için form kullanılabilir CREATE DATABASE IF NOT EXISTS base_datos_temperaturas; bu, yalnızca şu anda mevcut değilse "temperature_database" veritabanını oluşturur.

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 (ID) Kimlik, dizin olarak seçilen alandır.

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.

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

Kaçırmış Olabilirsiniz