Kurulum Rehberleri

MySQL Kurulumu ve İlk Veritabanı

MySQL sunucusunu üç işletim sisteminde kurmayı, güvenli kullanıcı ve yetki tanımlamayı, ilk veritabanını ve tabloyu oluşturmayı adım adım anlatıyoruz.

Aurora YazılımEditör ekibi 6 dk okuma
MySQL Kurulumu ve İlk Veritabanı
MySQL kurulumu nasıl yapılır?

MySQL kurulumu için Windows ve macOS'ta dev.mysql.com'dan LTS sürümünün kurucusunu indirip root şifresi belirleyin; Ubuntu'da sudo apt install mysql-server yeterlidir. Kurulumdan sonra mysql -u root -p ile bağlanın, CREATE DATABASE ile ilk veritabanını açın ve uygulamanız için yalnızca o veritabanına yetkili ayrı bir kullanıcı oluşturun.

MySQL Nedir, Neden Tercih Edilir?

MySQL, verileri tablolar hâlinde saklayan ve SQL diliyle sorgulanan, dünyanın en yaygın ilişkisel veritabanı sistemlerinden biridir. Web siteleri, e-ticaret sistemleri, rezervasyon ve stok uygulamaları gibi pek çok yazılım arka planda MySQL ya da onunla uyumlu MariaDB kullanır.

MySQL'in iki sürüm ailesi vardır: uzun süre destek alan LTS sürümleri ve yeni özellikleri daha erken getiren yenilik sürümleri. İş projeleri ve öğrenme için LTS'yi seçin; hangi sürümün güncel LTS olduğunu dev.mysql.com indirme sayfasından kontrol edin.

Bu rehberde MySQL Community Server'ı, yani ücretsiz topluluk sürümünü kuruyoruz. Yalnızca hızlıca PHP ile deneme yapmak istiyorsanız MariaDB içeren hazır bir paket de iş görür; bunu XAMPP kurulumu rehberimizde anlattık.

Windows'ta MySQL Kurulumu

İndirme sayfasından Windows için MSI kurucusunu seçin. Güncel sürümlerde kurulumun ardından MySQL Configurator açılır ve sunucu ayarlarını adım adım yapmanızı sağlar; eski sürümlerde aynı iş MySQL Installer ile yapılıyordu. İndirme sayfasında Oracle hesabıyla giriş istenirse “No thanks, just start my download” bağlantısıyla doğrudan indirebilirsiniz.

  1. Kurulum türünde geliştirme bilgisayarı için Development Computer profilini seçin; bu profil bellek kullanımını düşük tutar.
  2. Bağlantı ayarlarında varsayılan 3306 portunu bırakın; bilgisayarda başka bir veritabanı bu portu kullanıyorsa 3307 gibi bir değer girin.
  3. Kimlik doğrulama yönteminde önerilen güçlü şifreleme seçeneğini koruyun.
  4. root şifresini belirleyin ve güvenli bir yere not edin; bu, sunucudaki en yetkili hesaptır.
  5. MySQL'i Windows hizmeti olarak kaydedin ve bilgisayar açılışında başlamasını seçin.
  6. Son adımda ayarları uygulayın; tüm adımlar yeşil onay aldığında sunucu hazırdır.

macOS ve Linux'ta Kurulum

macOS'ta resmî DMG paketi bir sistem tercihi paneli kurar; sunucuyu buradan başlatıp durdurursunuz. Homebrew kullanıyorsanız kurulum ve hizmet yönetimi iki komutla yapılır.

Ubuntu ve Debian'da MySQL sunucusu dağıtım deposunda bulunur. Ubuntu'da kurulumdan sonra root kullanıcısı varsayılan olarak auth_socket yöntemiyle doğrulanır; yani şifre yerine sudo mysql komutuyla bağlanırsınız. Her iki sistemde de kurulumdan sonra mysql_secure_installation betiğini çalıştırmanızı öneririz: anonim kullanıcıları ve test veritabanını kaldırır, root'un uzaktan bağlanmasını kapatır.

bashmacOS (Homebrew)
brew install mysql
brew services start mysql
mysql_secure_installation
bashUbuntu / Debian
sudo apt update
sudo apt install mysql-server
sudo systemctl status mysql

# Güvenlik ayarları
sudo mysql_secure_installation

# root olarak bağlanma (auth_socket)
sudo mysql

Kurulumu Doğrulama

Sunucunun çalıştığını ve bağlanabildiğinizi aşağıdaki komutlarla kontrol edin. mysql -u root -p komutu şifrenizi sorar; doğru şifreyle mysql> istemini görüyorsanız kurulum tamamdır. Sunucu içindeki SQL komutlarının sonuna noktalı virgül koymayı unutmayın.

bashTerminal
mysql --version
mysql -u root -p
sqlmysql> istemi
SELECT VERSION();
SHOW DATABASES;
EXIT;

MySQL Veritabanı Oluşturma

Yeni bir veritabanı oluştururken karakter setini baştan doğru seçmek, ileride Türkçe karakter ve emoji sorunlarını önler. MySQL'in güncel sürümlerinde varsayılan karakter seti zaten utf8mb4'tür; yine de komutta açıkça belirtmek iyi bir alışkanlıktır. Türkçe sıralama kuralları istiyorsanız utf8mb4_tr_0900_ai_ci karşılaştırmasını kullanabilirsiniz.

Ardından ilk tabloyu oluşturalım. Örnekte basit bir ürün tablosu var: fiyat için kayan nokta yerine DECIMAL türü kullanılıyor, çünkü para tutarlarında yuvarlama hatası kabul edilemez.

  • PRIMARY KEY her satırı benzersiz tanımlar; AUTO_INCREMENT numarayı otomatik verir.
  • InnoDB depolama motoru işlem (transaction) ve yabancı anahtar desteği sunar, güncel sürümlerde varsayılandır.
  • Sık arama yaptığınız sütunlara indeks eklemek sorguları hızlandırır; ancak gereksiz her indeks yazma işlemlerini yavaşlatır.
sqlVeritabanı ve tablo
CREATE DATABASE magaza
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_tr_0900_ai_ci;

USE magaza;

CREATE TABLE urunler (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  ad VARCHAR(150) NOT NULL,
  fiyat DECIMAL(10,2) NOT NULL,
  stok INT NOT NULL DEFAULT 0,
  olusturma DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

INSERT INTO urunler (ad, fiyat, stok) VALUES ('Örnek ürün', 10.00, 25);
SELECT * FROM urunler;

MySQL Kullanıcı Oluşturma ve Yetki

Uygulamanızı asla root kullanıcısıyla veritabanına bağlamayın. Her uygulama için yalnızca kendi veritabanına erişen, yalnızca ihtiyaç duyduğu işlemleri yapabilen ayrı bir kullanıcı oluşturun. Böylece bir güvenlik açığı oluşsa bile zarar o veritabanıyla sınırlı kalır.

Kullanıcı adının yanındaki 'localhost' kısmı, bağlantının nereden kabul edileceğini belirler. Uygulama ile veritabanı aynı sunucudaysa localhost yeterlidir; uzak bağlantı gerekiyorsa yalnızca belirli bir IP adresine izin verin, '%' ile herkese açmaktan kaçının.

sqlUygulama kullanıcısı
CREATE USER 'magaza_app'@'localhost' IDENTIFIED BY 'Guclu-Bir-Sifre-2!';

GRANT SELECT, INSERT, UPDATE, DELETE ON magaza.* TO 'magaza_app'@'localhost';

SHOW GRANTS FOR 'magaza_app'@'localhost';

-- Şifre değiştirme ve kullanıcı silme
ALTER USER 'magaza_app'@'localhost' IDENTIFIED BY 'Yeni-Sifre-3!';
DROP USER 'magaza_app'@'localhost';

MySQL Workbench ile Görsel Yönetim

Komut satırı yerine görsel bir arayüz tercih ediyorsanız MySQL Workbench, MySQL'in resmî masaüstü aracıdır. Bağlantı ekranında artı simgesine tıklayıp sunucu adresini (127.0.0.1), portu (3306) ve kullanıcı adını girersiniz; Test Connection düğmesi ayarları doğrular.

Workbench'te tabloları görsel olarak tasarlayabilir, sorgu yazıp sonuçları tablo hâlinde görebilir, Server menüsünden veri dışa ve içe aktarabilirsiniz. Sorgu ekranında Ctrl+Enter imlecin bulunduğu komutu çalıştırır.

Yedek alma ve geri yükleme

Workbench'teki dışa aktarma ekranı arka planda mysqldump aracını kullanır. Aynı işi terminalden de yapabilirsiniz; düzenli ve otomatik yedek almak için bu komut zamanlanmış bir göreve eklenebilir. Yedeğin geri yüklenebildiğini ara ara test etmeden yedek almış sayılmazsınız.

bash
# Yedek al
mysqldump -u root -p magaza > magaza.sql

# Geri yükle
mysql -u root -p magaza < magaza.sql

Sık Bağlantı Hataları ve Çözümleri

MySQL'de karşılaşılan sorunların çoğu bağlantı, kimlik doğrulama ve şifre politikasıyla ilgilidir. Hata numarası, nedeni anlamanın en hızlı yoludur.

  • ERROR 1045 Access denied: Kullanıcı adı, şifre ya da bağlantı adresi (localhost / 127.0.0.1) yanlıştır. Kullanıcının hangi adres için tanımlandığını SELECT user, host FROM mysql.user; ile kontrol edin.
  • ERROR 2002 / 2003 Can't connect: Sunucu çalışmıyordur. Windows'ta Hizmetler ekranından MySQL hizmetini başlatın, Linux'ta sudo systemctl start mysql kullanın.
  • ERROR 1819 şifre politikası: validate_password bileşeni zayıf şifreyi reddediyordur; büyük harf, rakam ve özel karakter içeren daha uzun bir şifre seçin.
  • Port 3306 kullanımda: Bilgisayarda XAMPP gibi başka bir veritabanı çalışıyordur; birini durdurun ya da portlardan birini değiştirin.
  • Eski istemci kimlik doğrulama hatası: Güncel MySQL varsayılan olarak caching_sha2_password yöntemini kullanır; istemci kütüphanenizi güncelleyin.

MySQL'i Uygulamaya Bağlamak

PHP projelerinde MySQL'e bağlanmanın önerilen yolu PDO ile hazırlanmış sorgular (prepared statements) kullanmaktır; bu yöntem SQL enjeksiyonuna karşı temel korumayı sağlar. Bağlantı bilgilerini koda yazmak yerine Git'e eklenmeyen bir ortam dosyasında tutun. PHP bağımlılıklarını yönetmek için Composer kurulumu rehberimize bakabilirsiniz.

Farklı bir veritabanı düşünüyorsanız PostgreSQL kurulumu yazımızla iki sistemi karşılaştırabilirsiniz. Diğer içerikler için veritabanı etiketi sayfasına göz atın.

Veritabanı tasarımı, bir sitenin ya da e-ticaret altyapısının hızını doğrudan etkiler: yanlış indeksler ya da gereksiz sorgular sayfanın geç açılmasına neden olur. Bu tür darboğazları hız ve performans yönetimi çalışmalarımızda ölçüp gideriyoruz; kurumsal web sitesi projelerimizde de veritabanını baştan bu gözle kuruyoruz.

phpPDO ile bağlantı
<?php
$pdo = new PDO(
    'mysql:host=localhost;dbname=magaza;charset=utf8mb4',
    'magaza_app',
    getenv('DB_SIFRE'),
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);

$sorgu = $pdo->prepare('SELECT ad, stok FROM urunler WHERE id = ?');
$sorgu->execute([1]);
print_r($sorgu->fetch());

Sık Sorulan Sorular

01MySQL ile MariaDB arasındaki fark nedir?

MariaDB, MySQL'den türetilmiş ve büyük ölçüde uyumlu bir veritabanıdır. Temel SQL komutları ve çoğu uygulama ikisinde de aynı çalışır; ancak yeni sürümlerde bazı özellikler ve varsayılan ayarlar farklılaşmıştır, bu yüzden canlı sunucuda hangisi kullanılıyorsa yerelde de onu tercih edin.

02MySQL ücretsiz mi?

MySQL Community Server ücretsiz ve açık kaynaklıdır. Oracle'ın ek araçlar ve destek içeren ücretli kurumsal sürümleri de vardır; çoğu web projesi için topluluk sürümü yeterlidir.

03root şifremi unuttum, ne yapabilirim?

Resmî dokümantasyondaki şifre sıfırlama adımlarını izleyin: sunucu geçici olarak yetki denetimi atlanarak başlatılır ve ALTER USER ile yeni şifre belirlenir. Ubuntu'da root auth_socket kullanıyorsa sudo mysql ile şifresiz bağlanıp değişikliği doğrudan yapabilirsiniz.

MySQL'i LTS sürümüyle kurup güvenlik betiğini çalıştırmak, uygulamaya ayrı ve sınırlı yetkili bir kullanıcı tanımlamak ve düzenli yedek almak, sağlam bir veritabanının temelidir. İşletmeniz için veritabanı tasarımından arayüze kadar size özel bir sistem geliştirmek isterseniz Aurora Yazılım'ın özel yazılım çözümlerini inceleyin ya da bizimle iletişime geçin.