MySQL Nedir? Kapsamlı Rehber 2025: Kurulum, Optimizasyon ve Daha Fazlası
Merhaba, veritabanı meraklıları ve web geliştiricileri! 2025 yılında, web uygulamalarının ve veri odaklı projelerin
kalbi veritabanlarında atıyor. MySQL, bu alanda en popüler ve güvenilir açık kaynaklı veritabanı yönetim sistemlerinden
biri. Peki, MySQL nedir? Bu rehberde, MySQL'in tanımını, kurulum adımlarını, SQL sorgu dilini, performans optimizasyon
tekniklerini, yedekleme yöntemlerini, hosting entegrasyonunu ve PostgreSQL gibi alternatiflerle karşılaştırmasını
derinlemesine ele alacağız. Bolca kod örneği, adım adım bir tutorial ve güvenlik ipuçlarıyla, MySQL’i projelerinizde
ustalıkla kullanmak için ihtiyacınız olan her şeyi bulacaksınız. Kaliteweb gibi hosting sağlayıcılarıyla MySQL’i entegre
ederek, veri odaklı uygulamalarınızı güçlendirebilirsiniz. Hazırsanız, MySQL’in dünyasına dalalım!
MySQL Nedir? Tanım ve Genel Bakış
MySQL, açık kaynaklı bir ilişkisel veritabanı yönetim sistemi (RDBMS)dir. 1995’te MySQL AB tarafından geliştirilen bu
sistem, 2008’den beri Oracle tarafından destekleniyor. SQL (Structured Query Language) standardını kullanarak veri
saklar, yönetir ve sorgular. MySQL, performans, güvenilirlik ve kullanım kolaylığıyla tanınır; 2025’te WordPress, Drupal
gibi CMS’lerden e-ticaret platformlarına kadar milyonlarca sitede kullanılıyor.
MySQL’in temel özellikleri:
- İlişkisel Yapı: Tablolar arası ilişkilerle veriyi organize eder (örneğin, kullanıcılar ve siparişler).
- Yüksek Performans: InnoDB depolama motoruyla milyonlarca sorguyu saniyeler içinde işler.
- Çapraz Platform: Linux, Windows, macOS destekler.
- Açık Kaynak: Ücretsiz Community Edition; ücretli Enterprise Edition ($5000/yıl).
- Ölçeklenebilirlik: Küçük bloglardan büyük veri merkezlerine kadar uyar.
Örnek: Bir e-ticaret sitesi, MySQL ile ürün kataloğunu, kullanıcı verilerini ve siparişleri yönetir. Datatelekom’un
yüksek hızlı sunucularında, MySQL düşük gecikme sunar.
MySQL Kurulum Adımları: Adım Adım Rehber
MySQL kurmak, birkaç basit adımla mümkün. İşte Ubuntu 22.04 için 2025 rehberi (Windows/macOS benzer):
Adım 1: Sunucu Hazırlığı
- Gereksinimler: Ubuntu 22.04, root erişimi, internet bağlantısı.
- Komut: Sunucuyu güncelleyin:
sudo apt update && sudo apt upgrade -y
Adım 2: MySQL Kurulumu
- MySQL Community Server’ı indirin ve kurun:
sudo apt install mysql-server -y
- Servisi başlatın:
sudo systemctl start mysql
sudo systemctl enable mysql
Adım 3: Güvenlik Yapılandırması
- Güvenlik script’ini çalıştırın:
sudo mysql_secure_installation
- Root şifresi belirleyin, anonim kullanıcıları kaldırın, uzaktan root erişimini kapatın.
Adım 4: Test Etme
- MySQL’e bağlanın:
mysql -u root -p
- Versiyonu kontrol edin:
SELECT VERSION();
- Çıktı: 8.0.36 (2025 itibarıyla).
Süre: 10-15 dakika. Sorun çözümü: Bağlantı hatası alırsanız, sudo systemctl status mysql ile durumu kontrol edin.
Windows için Alternatif
- MySQL Installer’ı mysql.com’dan indirin.
- GUI ile kurun, root şifresi belirleyin.
- MySQL Workbench ile bağlanın.
Görsel Önerisi: MySQL kurulum ekranının ekran görüntüsü – Ubuntu terminalinde mysql_secure_installation çıktısı.
SQL Sorgu Dili: MySQL’in Kalbi
SQL, MySQL’in veriyle iletişim dilidir. Temel komutlar:
Tablo Oluşturma
CREATE DATABASE ecommerce;
USE ecommerce;
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
stock INT DEFAULT 0
);
Veri Ekleme
INSERT INTO products (name, price, stock) VALUES
('Laptop', 999.99, 50),
('Telefon', 499.99, 100);
Veri Sorgulama
SELECT * FROM products WHERE price > 500;
Veri Güncelleme
UPDATE products SET stock = 75 WHERE id = 1;
Veri Silme
DELETE FROM products WHERE stock = 0;
Gelişmiş Sorgu: JOIN
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT,
quantity INT,
FOREIGN KEY (product_id) REFERENCES products(id)
);
SELECT p.name, o.quantity
FROM products p
JOIN orders o ON p.id = o.product_id;
Örnek: Bir blog, MySQL ile kullanıcı yorumlarını saklar ve SELECT ile anlık listeler. Görsel Önerisi: MySQL Workbench’te
tablo oluşturma ekranı – sütun tanımları gösterilsin.
Performans Optimizasyonu: MySQL’i Hızlandırın
MySQL, büyük veri setlerinde yavaşlayabilir. 2025’te optimizasyon teknikleri:
- Index Kullanımı: Sık sorgulanan sütunlara index ekleyin:
CREATE INDEX idx_price ON products(price);
- Query Optimizasyonu: EXPLAIN ile sorgu performansını analiz edin:
EXPLAIN SELECT * FROM products WHERE price > 500;
- InnoDB Ayarları: innodb_buffer_pool_size’ı RAM’in %70’ine ayarlayın (örneğin, 8GB RAM için 5GB):
[mysqld]
innodb_buffer_pool_size=5G
- Partitioning: Büyük tabloları bölün:
CREATE TABLE orders (
order_id INT,
order_date DATE
) PARTITION BY RANGE (YEAR(order_date)) (
PARTITION p0 VALUES LESS THAN (2024),
PARTITION p1 VALUES LESS THAN (2026)
);
- Caching: Memcached veya Redis ile sık sorguları önbelleğe alın.
Örnek: Bir e-ticaret sitesi, index ekleyerek ürün sorgularını %40 hızlandırdı. Kaliteweb’in SSD sunucuları, disk I/O’yu
optimize eder.
Yedekleme Yöntemleri: Verilerinizi Koruyun
Veri kaybı felaket olabilir. MySQL’de yedekleme yöntemleri:
1. mysqldump ile Yedekleme
- Komut:
mysqldump -u root -p ecommerce > backup.sql
- Geri yükleme:
mysql -u root -p ecommerce < backup.sql
2. Otomatik Yedekleme Script’i
- Bash script’i oluşturun:
#!/bin/bash
BACKUP_DIR="/backups"
DATE=$(date +%F)
mysqldump -u root -p'password' ecommerce > $BACKUP_DIR/ecommerce_$DATE.sql
- Cron ile günlük çalıştırın:
crontab -e
0 2 * * * /path/to/backup.sh
3. Bulut Yedekleme
- Datatelekom’un FTP sunucusuna yedek yükleyin:
scp backup.sql user@ftp.datatelekom.com:/backups
Örnek: Bir blog, günlük yedeklerle veri kaybını önledi. Görsel Önerisi: mysqldump komutunun terminal çıktısı.
Hosting Entegrasyonu: MySQL ve Web Uygulamaları
MySQL, web hosting ile sıkı entegredir. 2025’te entegrasyon yolları:
- Paylaşımlı Hosting: Kaliteweb’in paylaşımlı planlarında MySQL varsayılan. cPanel/Plesk ile veritabanı oluşturun.
- VPS/Dedicated: MySQL’i manuel kurun, PHP/Node.js ile bağlanın:
<?php
$conn = new mysqli('localhost', 'user', 'password', 'ecommerce');
if ($conn->connect_error) {
die('Bağlantı hatası: ' . $conn->connect_error);
}
$result = $conn->query('SELECT * FROM products');
while ($row = $result->fetch_assoc()) {
echo $row['name'] . ': $' . $row['price'] . '<br>';
}
$conn->close();
?>
- Performans: LiteSpeed ile MySQL sorguları %30更快. Datatelekom’un düşük gecikmeli ağları, API çağrılarını hızlandırır.
- Ölçeklendirme: MySQL Cluster ile yük dağıtımı:
sudo apt install mysql-cluster
Örnek: Bir WordPress sitesi, MySQL ile içerik saklar ve Kaliteweb’in CDN’siyle %20 daha hızlı sunar.
MySQL vs PostgreSQL: Karşılaştırma
MySQL, WordPress gibi CMS’ler için ideal; PostgreSQL, analitik ve karmaşık veri için. Örnek: Bir blog MySQL kullanırken,
bir veri analizi platformu PostgreSQL seçer.
Güvenlik İpuçları: MySQL’i Koruyun
MySQL’i güvenli tutmak kritik. 2025 güvenlik ipuçları:
- Kullanıcı Yönetimi: Root’u sınırlayın, proje için ayrı kullanıcılar oluşturun:
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'güçlüŞifre123!';
GRANT SELECT, INSERT, UPDATE ON ecommerce.* TO 'app_user'@'localhost';
- Şifreleme: SSL/TLS etkinleştirin:
[mysqld]
ssl-ca=ca.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
- Firewall: 3306 portunu kısıtlayın:
sudo ufw allow from 192.168.1.0/24 to any port 3306
- Güncellemeler: MySQL’i güncel tutun (8.0.36, 2025 sürümü).
- SQL Injection Önleme: Parametreli sorgular kullanın:
$stmt = $conn->prepare('SELECT * FROM products WHERE id = ?');
$stmt->bind_param('i', $id);
$stmt->execute();
Örnek: Bir site, SQL injection’ı önlemek için parametreli sorgularla güvenliği %90 artırdı.
Adım Adım Tutorial: MySQL ile Blog Veritabanı Oluşturma
Bir blog için MySQL veritabanı oluşturalım:
Adım 1: Veritabanı ve Tablo Oluşturma
CREATE DATABASE blog;
USE blog;
CREATE TABLE posts (
post_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
content TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE comments (
comment_id INT AUTO_INCREMENT PRIMARY KEY,
post_id INT,
comment TEXT,
FOREIGN KEY (post_id) REFERENCES posts(post_id)
);
Adım 2: Veri Ekleme
INSERT INTO posts (title, content) VALUES
('İlk Blog Yazısı', 'Merhaba, bu bir test yazısı!'),
('SEO Rehberi', '2025 SEO ipuçları burada.');
INSERT INTO comments (post_id, comment) VALUES
(1, 'Harika bir yazı!');
Adım 3: Sorgulama
SELECT p.title, c.comment
FROM posts p
LEFT JOIN comments c ON p.post_id = c.post_id;
Adım 4: PHP Entegrasyonu
<?php
$conn = new mysqli('localhost', 'blog_user', 'password', 'blog');
if ($conn->connect_error) {
die('Bağlantı hatası');
}
$result = $conn->query('SELECT title, content FROM posts');
while ($row = $result->fetch_assoc()) {
echo '<h2>' . $row['title'] . '</h2><p>' . $row['content'] . '</p>';
}
$conn->close();
?>
Süre: 30 dakika. Görsel Önerisi: MySQL Workbench’te tablo ilişkileri diyagramı.
Sonuç: MySQL ile Verilerinizi Güçlendirin
MySQL nedir? Web uygulamalarınızın belkemiği – güçlü, esnek ve ölçeklenebilir bir veritabanı. Bu rehberle, kurulumdan
optimizasyona, güvenlikten entegrasyona kadar her şeyi öğrendiniz. Kaliteweb ve Datatelekom’un altyapısıyla, MySQL
projelerinizi hayata geçirin ve verilerinizin gücünü keşfedin!