SQL Notları: SSL Bağlantı Kurulumu

### MySQL’de SSL Bağlantı Kurulumu ve Değişkenlerin Gösterilmesi

MySQL, güvenli bağlantılar kurmak ve sunucu değişkenlerini yönetmek için çeşitli araçlar sunar. Bu yazıda, **SSL bağlantı kurulumu** ve **SHOW VARIABLES** komutu ile ilgili temel bilgileri ve kullanım örneklerini ele alacağız.

### SSL Bağlantı Kurulumu

MySQL’de SSL bağlantıları, veri iletişimini şifreleyerek güvenli hale getirir. Bu özellik, özellikle hassas verilerin iletilmesi gereken durumlarda önemlidir.

#### Debian Tabanlı Sistemlerde SSL Kurulumu
1. **OpenSSL ve Gerekli Kütüphanelerin Kurulumu:**
  “`bash
  apt-get -y install openssl
  apt-get -y install libssl-dev
  “`

2. **SSL Sertifikalarının Oluşturulması:**
  “`bash
  mkdir /home/ubuntu/mysqlcerts
  cd /home/ubuntu/mysqlcerts

  openssl genrsa 2048 > ca-key.pem
  openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca.pem

  openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem
  openssl rsa -in server-key.pem -out server-key.pem
  openssl x509 -req -in server-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

  openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem
  openssl rsa -in client-key.pem -out client-key.pem
  openssl x509 -req -in client-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
  “`

3. **MySQL Yapılandırma Dosyasına SSL Ayarlarının Eklenmesi:**
  “`bash
  vi /etc/mysql/mysql.conf.d/mysqld.cnf
  “`
  `[mysqld]` bölümüne aşağıdaki satırları ekleyin:
  “`ini
  ssl-ca = /home/ubuntu/mysqlcerts/ca.pem
  ssl-cert = /home/ubuntu/mysqlcerts/server-cert.pem
  ssl-key = /home/ubuntu/mysqlcerts/server-key.pem
  “`

4. **MySQL’in Yeniden Başlatılması:**
  “`bash
  service mysql restart
  “`

5. **SSL Bağlantısının Test Edilmesi:**
  “`bash
  mysql –ssl-ca=ca.pem –ssl-cert=client-cert.pem –ssl-key=client-key.pem -h 127.0.0.1 -u superman -p
  “`

  Bağlantının güvenli olduğunu doğrulamak için:
  “`sql
  SHOW VARIABLES LIKE ‘%ssl%’;
  “`

#### CentOS/RHEL 7’de SSL Kurulumu
CentOS/RHEL 7’de SSL kurulumu benzer adımları içerir, ancak sertifikaların konumu ve dosya yolları farklı olabilir. Örneğin, sertifikalar `/etc/pki/tls/certs/mysql/` dizinine yerleştirilir ve MySQL yapılandırma dosyası (`/etc/my.cnf`) güncellenir.

### SHOW VARIABLES ve SHOW STATUS Komutları

MySQL’de sunucu değişkenlerini ve durum bilgilerini görüntülemek için `SHOW VARIABLES` ve `SHOW STATUS` komutları kullanılır.

#### SHOW VARIABLES Örneği
Sunucu değişkenlerini görüntülemek için:
“`sql
SHOW VARIABLES;
“`

Belirli bir değişkeni filtrelemek için:
“`sql
SHOW VARIABLES LIKE ‘max_join_size’;
“`

Veya joker karakterler kullanarak:
“`sql
SHOW VARIABLES LIKE ‘%size%’;
“`

#### SHOW STATUS Örneği
Sunucu durum bilgilerini görüntülemek için:
“`sql
SHOW STATUS;
“`

Belirli bir durum değişkenini filtrelemek için:
“`sql
SHOW STATUS LIKE ‘Threads_connected’;
“`

#### GLOBAL ve SESSION Modifikatörleri
– `GLOBAL`: Sunucunun genel değişkenlerini ve durum bilgilerini gösterir.
– `SESSION`: Mevcut oturum için geçerli değişkenleri ve durum bilgilerini gösterir.

Örnek:
“`sql
SHOW GLOBAL VARIABLES;
SHOW SESSION STATUS;
“`

### Sonuç

MySQL’de SSL bağlantıları kurmak ve sunucu değişkenlerini yönetmek, veritabanı güvenliği ve performansı açısından oldukça önemlidir. SSL bağlantıları, veri iletişimini şifreleyerek güvenli hale getirirken, `SHOW VARIABLES` ve `SHOW STATUS` komutları, sunucu yapılandırması ve performansı hakkında değerli bilgiler sağlar. Bu araçları doğru bir şekilde kullanarak, veritabanı yönetimini daha güvenli ve verimli hale getirebilirsiniz.