20 Mayıs 2020 Çarşamba

Django Uygulamasını MySQL Veritabanına Bağlama

  MySQL Community Server Kurma, MySQL'de Yeni Kullanıcı Oluşturma ve MySQL Workbench Kullanarak Yeni Veritabanı Oluşturma adımlarını tamamladığımıza göre şimdi Django Uygulamamızı MySQL veritabanına bağlamayı adım adım göreceğiz.

Birinci Adım - MySQL Client Kurma


  İlk olarak Django Uygulamamız için kullandığımız Python virtual environment'ine "mysqlclient"i kurmamız gerekiyor. Ama öncelikle bilgisayarımızda MySQL Client kütüphanesinin bulunması olması lazım.

  Eğer Ubuntu kullanıyorsak aşağıdaki komutla "mysqlclient"i kurabiliriz.
$ sudo apt-get install libmysqlclient-dev
Eğer macOS kullanıyorsak bu video macOS'te mysqlclient kurma'yı anlatıyor.

  Ardından "mysqlclient"i kurabiliriz. Uyumsuzluk olmaması için şuanda "1.4.4" sürümünü kullanabiliriz.
$ pip install mysqlclient==1.4.4

İkinci Adım - Django settings.py Dosyasını Düzenleme


  Django "settings.py" dosyasına giriyoruz.

  DATABASES kısmını aşağıdaki gibi düzenliyoruz.
 
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': database_name',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': 3306
    }
}

Kaydediyoruz.

Üçüncü Adım - Veritabanını Migrate Etme


  Son olarak "manage.py" dosyasının olduğu dizine gelip aşağıdaki komutu çalıştırıyoruz.
$ python manage.py migrate

Not: Kullanıcı girişleri için tekrardan yeni kullanıcı yaratmamız gerekir.
$ python manage.py createsuperuser

Bu kadar!

Kaynakça:

1. Digital Ocean How to Create a Django App and Connect it to a Database. Erişim Tarihi: 20 Mayıs 2020.

MySQL Workbench Kullanarak Yeni Veritabanı Oluşturma

  MySQL Community Server Kurma ve MySQL'de Yeni Kullanıcı Oluşturma adımlarını tamamladığımıza göre şimdi MySQL Workbench kullanarak yeni bir veritabanını nasıl oluşturabileceğimizi adım adım göreceğiz.


  MySQL Workbench'i açtıktan sonra yeni bir Connection oluşturuyoruz.
  • Bunun için "MySQL Connections" yazısının yanındaki "+" sembolüne tıklıyoruz.
  • "Connection Name" ile birlikte "username" ve "password" bilgilerini girdikten sonra "Ok" dediğimizde connection oluşuyor.
  • Oluşan Connection'a tıklayarak bağlanıyoruz.
  • Ardından ekranın sol üstünde kalan semboller arasından, üzerine geldiğimizde "Create a new schema in the connected server" yazısı gelen sembole tıklıyoruz. 
  • Schema için isim verdikten sonra Default Collation olarak "utf8mb4 - utf8mb4_unicode_ci"ı seçiyoruz.
  • "Apply" yaptıktan sonra gelen ekranda da "Apply" diyince yeni veritabanımız(schema diye geçiyor) oluşmuş oluyor.
  • Eğer soldaki "SCHEMAS" panelinde göremezsek yenile butonuna tıkladığımızda görebiliriz.

19 Mayıs 2020 Salı

MySQL Community Server Kurma

 Kurulum için işletim sistemimize uygun bir yol izlememiz gerekiyor.
Eğer Microsoft Windows veya macOS kullanıyorsak MySQL Community Server indirme sayfasına gidiyoruz.
  • Microsoft Windows için:
    • Windows (x86, 64-bit), ZIP Archive
  • macOS için:
    • macOS 10.15 (x86, 64-bit), DMG Archiv 
indirip kurabiliriz.
  • Ubuntu için:
    •  Yine MySQL'in kendi sitesinde indirme linkleri bulunuyor ama linkler yeterince kullanışlı değil. O yüzden Ubuntu 18.04 için aşağıdaki adımları takip edebiliriz: 
    • $ sudo wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb
    • $ sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb 
    •  İstediğimiz MySQL versiyonunu seçtikten sonra "Ok"u seçiyoruz. (Yeni başlayanlar MySQL 8'i tercih edebilir.)
    • $ sudo apt-get update
    • $ sudo apt-get install mysql-server
    •  Bu adımda parolamızı giriyoruz ve önerilen adımları takip edip kurulumu tamamlıyoruz. Kurulumu kontrol etmek için aşağıdaki komut kullanılır.  
    • $ systemctl status mysql
    •  Dilersek "mysql_secure_installation" adımlarını takip edebiliriz, ki bu eğer sunucumuza kurduğumuz bir veritabanıysa güvenlik için büyük bir önem arz ediyor.  
    • $ mysql_secure_installation
    • Adımları tamamladıktan sonra giriş yapabiliriz.
Bu kadar!

  MySQL komut satırına giriş yapmak için; Windows'ta MySQL Command-Line Client'i, macOS veya Ubuntu'da ise terminalde alttaki komutu yazabiliriz.
$ mysql -u root -p
  Bu komut, MySQL'deki "root" user'ına password girerek erişmek anlamına geliyor.

MySQL komut satırından çıkış yapmak için aşağıdaki komutu kullanabiliriz.
mysql> exit;

  MySQL Workbench kullanarak veritabanımızı rahatlıkla yönetebiliriz. MySQL Workbench'ten veritabanımızı yönetmek için en uygun yöntem öncelikle bir kullanıcı oluşturmak.

MySQL'de Yeni Kullanıcı Oluşturma

Kaynakça:
1. MySQL MySQL Community Server Download Page.
Erişim Tarihi: 19 Mayıs 2020.
2. YouTube How to Install MySQL 8 on Ubuntu 18.04 LTS.
Erişim Tarihi: 19 Mayıs 2020.

14 Mayıs 2020 Perşembe

MySQL'de Yeni Kullanıcı Oluşturma

  Kullanıcı oluşturup, gerekli yetkilendirmeyi yapmak için aşağıdaki adımları takip edebiliriz.

Yeni kullanıcı oluşturmak için aşağıdaki komutu kullanıyoruz.
mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Oluşturduğumuz kullanıcıyı belirli bir veritabanıyla ilişkilendirmek için aşağıdaki komutu kullanıyoruz.
mysql> GRANT ALL PRIVILEGES ON dbname.* TO 'newuser'@'localhost';

Oluşturduğumuz kullanıcıyı tüm veritabanlarıyla ilişkilendirmek için aşağıdaki komutu kullanıyoruz.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';

Kullanıcımın oluşup oluşmadığını anlamak için aşağıdaki komutu kullanıyoruz:
mysql> SELECT user, host FROM mysql.user;

NOT: Yetkileri yenilemeyi unutursak sonraki adımlarda muhtemelen sıkıntı yaşayacağız.

mysql> FLUSH PRIVILEGES;

"FLUSH PRIVILEGES" komutunu kullanarak yetkilendirmeyi anında geçerli kıldık.

Bu kadar!

13 Mayıs 2020 Çarşamba

Bir Yazılımın Telif Haklarının Alınması

T.C. Kültür ve Turizm Bakanlığı'ndan yazılımın telif hakları alınabilir.

MySQL Veritabanını Bir Sunucudan Başka Bir Sunucuya Taşıma

Bir MySQL veritabanını bir sunucudan diğerine taşımak için izlenebilecek yöntemlerden birini adım adım anlatacağım.

Birinci Adım - Veritabanını Yedekleme

Öncelikle taşımak istediğimiz veritabanını "mysqldump" komutunu kullanarak yedekliyoruz.

a = yedeklenen veritabanı ismi
b =  yedek veritabanı ismi

mysqldump -u root -p --opt a > b.sql

Böylece veritabanını yedekledik.

İkinci Adım - Veritabanını Taşıma

Yedeklediğimiz veritabanını "scp" komutunu kullanarak bir sunucudan diğerine aktarıyoruz.

ACEMİ NOTU: '$' işareti, Linux terminalini temsil eder. Terminalde tekrardan bu işareti koyarsanız komut çalışmaz.


"scp" komutunun kullanımı aşağıdaki gibidir.

$ scp b.sql kullaniciadi@sunucuadi.com:veritabaninin/tasinacagi/yol

Basit bir taşıma komutu aşağıdaki gibidir.

$ scp b.sql kullanici@ornek.com:~/

Böylece veritabanını yedekledik.

Üçüncü Adım - Veritabanını İçe Aktarma


Son olarak taşınan veritabanını sunucudaki MySQL sunucusunda içe aktarırız.

a = yedeklenen veritabanı ismi

$ mysql -u root -p < /veritabani/yolu/a.sql

Veya yeni oluşan veritabanının ismini de vermek istiyorsak, öncelikle verilerin aktarılacağı MySQL Schema'sını oluştururuz. Bu Schema'yı MySQL Workbench üzerinden oluşturabiliriz. Ardından Veritabanını aşağıdaki komutla içe aktarabiliriz.

b =  yedek veritabanı ismi

$ mysql -u root -p b < /veritabani/yolu/a.sql

Böylece veritabanını sunucumuza taşımış olduk.

Bu kadar!

Artık sunucuma taşıdığım veritabanını MySQL Workbench üzerinden "Standard TCP/IP over SSH" Connection Method" seçeneğini kullanarak uzaktan kontrol edebilirim.

Kaynakça:

1. Digital Ocean How to Migrate a MySQL Database Between Two Servers. Erişim Tarihi: 14 Mayıs 2020.

25 Şubat 2020 Salı

Ekransız Raspberry Pi Üzerinde MariaDB Çalıştırma

Bu yazımda, Raspberry Pi üzerinde MariaDB çalıştırmak için üzerinden gittiğim süreci adım adım not alacağım.

Öncelikle kullandığım Raspberry Pi'da şuan için ekranım yok. O yüzden Raspberry Pi'a SSH üzerinden ulaşmak zorunda kaldım.

Raspberry Pi'a kablosuz bağlanmak için gerekenler aşağıdaki yazıda adım adım anlatılmış, yazıyı takip ettim:
https://desertbot.io/blog/headless-raspberry-pi-3-bplus-ssh-wifi-setup

Yazının sonucunda Raspberry'nin IP'sini bulmak için de kendi bilgisayarımda "arp-scan" programını kullandım. Ubuntu üzerinde:
$ sudo apt install arp-scan
komutuyla indirip;
$ sudo arp-scan --localnet
komutuyla da bağlı olduğum yerel ağ bağlantısındaki cihazların ip adreslerini tarıyorum. Raspberry Pi cihazımın ismi de "Raspberry Pi Foundation" olarak görülüyor.

SSH bağlantısını kurmak için;
$ ssh pi@192.168.1.19        # Benim cihazımın ip'si 192.168.1.19 olduğu için.

Bağlantı kurulduktan sonra:

Aşağıdaki siteye girdim:
https://linuxize.com/post/how-to-install-mariadb-on-debian-9/

Adımlar:
1- "apt" paket güncellemesi yapmamız gerekiyor.
$ sudo apt update
Ben "apt"ye "update"ten sonra "upgrade" de yapmayı tercih etmiyorum, çünkü bazen "upgrade" sırasında problemler çıkabiliyor.

2- "apt" paket güncellemesi tamamlandıktan sonra alt satırdaki komutu kullanarak MariaDB'yi kuruyorum.
$ sudo apt install mariadb-server

MariaDB servisi otomatik olarak başlıyor zaten. Ben alt satırdaki komutu kullanarak servisin durumunu kontrol ediyorum.
$ sudo systemctl status mariadb

Çıktı olarak gelen yazıda;
- Active:           // satırında
- Active: active    // görüyorum. Muhtelemen bir problem yoktur.


Kurulumu tamamladığıma göre güvenli kurulum aşamasının üstünden geçebilirim.
Secure Installation için alt satırdaki komutu kullanıyorum;
$ sudo mysql_secure_installation

Komut ilk çalıştırıldığında bana "root" parolası sordu. Parolamı girdikten sonra parolamı yenilemek isteyip istemediğimi sordu, parolamı yenilemek istemediğim için 'n' dedikten sonra sıradaki sorulara 'y' dedim.
NOT: Sorulara 'y' dedikten sonra veritabanındaki anonim kullanıcılar siliniyor, veritabanı sunucusuna "root" olarak uzaktan erişim kapatılıyor, örnek veritabanları siliniyor ve kullanıcı yetkileri yenileniyor.

Bu komutun aşamalarını tamamladığım için MariaDB veritabanı sunucum artık daha güvenli.

Artık MariaDB veritabanı sunucusu monitörüne giriş yapabilirim.
$ sudo mysql -u root -p          # -u dedikten sonra kullanıcı adı yazıyoruz

Parolamı da doğru girdikten sonra karşıma MariaDB terminali geliyor.

Şimdi öncelikle kullanacağım veritabanını oluşturuyorum.
MariaDB> CREATE DATABASE dbname;

Veritabanının oluşup oluşmadığını kontrol etmek için;
MariaDB> show databases;

Veritabanını oluşturduktan sonra veritabanını yönetmek istediğim kullanıcıyı oluşturmam ve o kullanıcıya yetki vermem gerekiyor. Bunun için aşağıdaki sayfayı kullanıyorum:
https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql

Kullanıcıyı oluşturuyorum ve gerekli yetkilendirmeyi yapıyorum.
MariaDB> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

MariaDB> GRANT ALL PRIVILEGES ON dbname.* TO 'newuser'@'localhost';

Kullanıcımın oluşup oluşmadığını anlamak için aşağıdaki komutu kullanıyorum:
MariaDB> SELECT user, host FROM mysql.user;

NOT: Yetkileri yenilemeyi unutursak sonraki adımlarda muhtemelen sıkıntı yaşayacağız.

MariaDB> FLUSH PRIVILEGES;

"FLUSH PRIVILEGES" komutunu kullanarak yetkilendirmeyi anında geçerli kıldım.

Artık MariaDB terminalinden çıkış yapabilirim.
MariaDB> exit;


Bu kadar!

Artık kişisel bilgisayarıma kurduğum MySQL Workbench üzerinden "Standard TCP/IP over SSH" Connection Method'unu kullanarak veritabanını uzaktan kontrol edebilirim.
















Django Uygulamasını MySQL Veritabanına Bağlama

  MySQL Community Server Kurma , MySQL'de Yeni Kullanıcı Oluşturma ve MySQL Workbench Kullanarak Yeni Veritabanı Oluşturma adımlarını...