Debian 9 Üzerine En Son MySQL Sürümünü Kurulum Rehberi
Debian 9 “Stretch”, sağlamlığı ve güvenilirliği ile bilinen bir Linux dağıtımıdır. Ancak, yazılım dünyası sürekli geliştiği için, zaman zaman işletim sisteminin varsayılan depolarında bulunan yazılım sürümleri ihtiyaçlarımızı karşılamayabilir. Özellikle veritabanı yönetim sistemleri söz konusu olduğunda, en yeni özelliklere, performans iyileştirmelerine ve güvenlik yamalarına sahip olmak kritik önem taşıyabilir. MySQL, dünyanın en popüler açık kaynaklı ilişkisel veritabanı yönetim sistemlerinden biridir ve web uygulamalarından kurumsal sistemlere kadar geniş bir yelpazede kullanılır. Bu makalede, Debian 9 “Stretch” üzerine MySQL’in en son stabil sürümünü (genellikle MySQL 8.0 veya o anki en güncel sürüm) resmi MySQL APT deposu aracılığıyla nasıl kuracağınızı adım adım detaylı bir şekilde açıklayacağız.
Bu rehber, Debian 9’un artık resmi güvenlik güncellemeleri almadığını ve “End-of-Life” (EOL) statüsünde olduğunu unutmadan hazırlanmıştır. Bu nedenle, mümkünse daha yeni bir Debian sürümüne (Debian 10, 11 veya 12) yükseltmeniz şiddetle tavsiye edilir. Ancak, belirli bir uygulama veya donanım kısıtlaması nedeniyle Debian 9 kullanmaya devam etmek zorunda kalan veya eski bir sistemi yükseltmeden önce test ortamı kurmak isteyen kullanıcılar için bu rehber faydalı olacaktır. Güvenlik risklerini en aza indirmek için, bu tür bir kurulumu yalnızca çok iyi korunan, izole edilmiş ağ ortamlarında veya test sistemlerinde kullanmanız önerilir.
Ön Gereksinimler
Kuruluma başlamadan önce aşağıdaki ön gereksinimleri kontrol etmeniz önemlidir:
* Sudo Yetkileri: Kurulum için root kullanıcısı olarak veya sudo yetkilerine sahip bir kullanıcı olarak komutları çalıştırmanız gerekecektir.
* İnternet Bağlantısı: MySQL paketlerini indirmek için aktif bir internet bağlantınız olmalıdır.
* Temel Linux Komut Satırı Bilgisi: Temel komut satırı bilgisine sahip olmak, karşılaşılabilecek sorunları gidermede size yardımcı olacaktır.
* Debian 9 (Stretch) İşletim Sistemi: Bu rehber özellikle Debian 9 için yazılmıştır. Diğer Debian sürümlerinde veya farklı Linux dağıtımlarında adımlar değişiklik gösterebilir.
* Disk Alanı: MySQL veritabanı ve ilgili dosyalar için yeterli disk alanına sahip olduğunuzdan emin olun.
MySQL Sürümlerini ve Debian Depolarını Anlamak
Debian’ın resmi depoları genellikle kararlılığa ve güvenilirliğe odaklanır. Bu nedenle, Debian 9’un varsayılan depolarında bulunan MySQL sürümü, MySQL 5.7 gibi daha eski bir sürüm olabilir. En son MySQL sürümünü kurmak için, MySQL’in kendi resmi APT deposunu sistemimize eklememiz gerekmektedir. Bu depo, en yeni stabil sürümleri ve güvenlik güncellemelerini doğrudan Oracle’dan almanızı sağlar.
MySQL Community Server, açık kaynaklı ve ücretsiz bir sürüm olup, bu rehberde kurulumunu yapacağımız versiyondur. Genellikle web uygulamaları, geliştirme ortamları ve küçük ila orta ölçekli projeler için yeterlidir.
Adım Adım En Son MySQL Kurulumu
Aşağıdaki adımları sırasıyla uygulayarak Debian 9 sunucunuza en son MySQL sürümünü kurabilirsiniz.
Adım 1: Sistem Paketlerini Güncelleme
Kuruluma başlamadan önce, sisteminizin paket listesini güncellemek ve mevcut paketleri yükseltmek iyi bir uygulamadır. Bu, olası bağımlılık sorunlarını önlemeye yardımcı olur.
sudo apt update
sudo apt upgrade
sudo apt update komutu, yerel paket indeksinizi günceller ve depolarınızdaki en yeni paket bilgilerini indirir. sudo apt upgrade ise, kurulu olan paketlerinizin daha yeni sürümleri varsa bunları yükseltir. Kernel veya diğer önemli sistem bileşenleri güncellenirse, sisteminizi yeniden başlatmanız gerekebilir.
Adım 2: MySQL APT Depo Yapılandırma Paketini Ekleme
MySQL’in resmi deposunu sisteminize eklemek için öncelikle mysql-apt-config adlı bir .deb paketini indirip kurmanız gerekir. Bu paket, MySQL deposunu sisteminize ekler ve hangi MySQL sürümünü kurmak istediğinizi seçmenize olanak tanıyan etkileşimli bir arayüz sağlar.
Öncelikle, wget komutunu kullanarak mysql-apt-config paketini indirin. Paket sürümü zaman zaman değişebilir, bu nedenle en güncel sürümü kontrol etmek için MySQL indirme sayfalarını ziyaret edebilirsiniz. Ancak, genellikle 0.8.22-1 gibi bir sürüm Debian 9 ile uyumlu ve en yeni MySQL sürümlerini seçmenize olanak tanır.
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
Paketi indirdikten sonra, dpkg komutu ile kurun:
sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb
Bu komutu çalıştırdığınızda, size hangi MySQL ürününü ve sürümünü kurmak istediğinizi soran mavi bir yapılandırma ekranı gelecektir.
1. “MySQL Server & Cluster” seçeneğini seçin ve Enter tuşuna basın.
2. Bir sonraki ekranda, kurmak istediğiniz MySQL sürümünü seçmeniz istenecektir. Burada “mysql-8.0” (veya o anki en son stabil sürüm) seçeneğini seçin ve Enter tuşuna basın.
3. Diğer seçenekler (MySQL Tools, Connectors vb.) için varsayılan seçimleri bırakabilir veya ihtiyacınıza göre değiştirebilirsiniz. Genellikle varsayılanlar yeterlidir.
4. Son olarak, “Ok” seçeneğini seçin ve Enter tuşuna basarak yapılandırmayı tamamlayın.
Yapılandırma tamamlandıktan sonra, APT paket indeksini tekrar güncellemeniz gerekmektedir. Bu, yeni eklenen MySQL deposundaki paket bilgilerini sisteminize getirir.
sudo apt update
Artık sisteminiz, MySQL’in en son sürümünü resmi depodan kurmaya hazırdır.
Adım 3: MySQL Server Kurulumu
Şimdi apt install komutu ile MySQL Community Server’ı kurabilirsiniz.
sudo apt install mysql-community-server
Kurulum sırasında, MySQL root kullanıcısı için bir parola belirlemeniz istenecektir. Bu parola, veritabanı yönetiminde süper kullanıcı yetkilerine sahip olacağınız için çok güçlü ve akılda kalıcı olmalıdır. Parolayı iki kez girip onaylayın.
Daha sonra, MySQL’in kullanacağı kimlik doğrulama yöntemini seçmeniz istenecektir.
* “Use Strong Password Encryption for authentication (recommended)”: Bu, MySQL 8.0’ın varsayılan kimlik doğrulama yöntemi olan caching_sha2_password‘u kullanır. Daha güvenlidir ve yeni uygulamalar için önerilir.
* “Use Legacy Authentication Method (MySQL 5.x compatible)”: Bu, mysql_native_password kimlik doğrulama yöntemini kullanır. Eski uygulamalarla uyumluluk gerektiren durumlar için tercih edilebilir, ancak daha az güvenlidir.
Yeni bir kurulum yapıyorsanız ve eski uygulamalarla uyumluluk sorununuz yoksa “Use Strong Password Encryption for authentication (recommended)” seçeneğini seçmeniz güvenlik açısından en doğrusudur.
Seçimlerinizi yaptıktan sonra kurulum devam edecek ve tamamlanacaktır.
Adım 4: MySQL Servisini Kontrol Etme
Kurulum tamamlandıktan sonra, MySQL servisinin düzgün çalışıp çalışmadığını kontrol etmelisiniz.
sudo systemctl status mysql
Bu komutun çıktısı, MySQL servisinin durumunu gösterecektir. “active (running)” ifadesini görmelisiniz. Eğer servis çalışmıyorsa, aşağıdaki komutlarla başlatabilirsiniz:
sudo systemctl start mysql
sudo systemctl enable mysql # Sistem başlangıcında otomatik başlaması için
Adım 5: Güvenlik Ayarlarını Yapılandırma
Yeni kurulan MySQL sunucunuzun güvenliğini artırmak için mysql_secure_installation betiğini çalıştırmanız şiddetle tavsiye edilir. Bu betik, bir dizi güvenlik adımını otomatik olarak yapılandırmanıza yardımcı olur.
sudo mysql_secure_installation
Betik size aşağıdaki soruları soracaktır:
1. VALIDATE PASSWORD COMPONENT: Parola doğrulama eklentisini kurmak isteyip istemediğinizi sorar. Bu eklenti, kullanıcı parolalarının belirli bir karmaşıklık düzeyinde olmasını zorunlu kılar. Şiddetle tavsiye edilir. Kurmak isterseniz y yazın ve Enter’a basın. Ardından bir parola gücü seviyesi seçmeniz istenecektir (LOW, MEDIUM, STRONG). Genellikle MEDIUM veya STRONG seçeneğini seçmek iyi bir uygulamadır.
2. Change the root password? Kurulum sırasında bir root parolası belirlemiş olsanız bile, burada tekrar değiştirebilir veya onaylayabilirsiniz. Eğer değiştirmek istemiyorsanız n yazın.
3. Remove anonymous users? Anonim kullanıcılar, herhangi bir kimlik doğrulaması olmadan veritabanına erişebilir. Bu, bir güvenlik açığıdır. y yazarak bunları kaldırmalısınız.
4. Disallow root login remotely? root kullanıcısının sadece localhost‘tan bağlanmasına izin vermek, dışarıdan gelebilecek saldırıları önler. y yazarak uzaktan root girişini devre dışı bırakın.
5. Remove test database and access to it? MySQL varsayılan olarak bir test veritabanı ile gelir. Bu veritabanı genellikle üretim ortamlarında gereksizdir ve kaldırılması önerilir. y yazarak kaldırın.
6. Reload privilege tables now? Yapılan değişikliklerin hemen etkili olması için yetki tablolarının yeniden yüklenmesi gerekir. y yazarak bunu onaylayın.
Bu adımları tamamladıktan sonra MySQL sunucunuz daha güvenli hale gelecektir.
Adım 6: MySQL’e Bağlanma ve Test Etme
Kurulumun başarılı olduğunu doğrulamak için MySQL sunucusuna root kullanıcısı olarak bağlanabilirsiniz.
mysql -u root -p
Komutu çalıştırdıktan sonra, kurulum sırasında veya mysql_secure_installation betiğinde belirlediğiniz root parolasını girmeniz istenecektir. Parolayı doğru girdiğinizde MySQL komut istemine düşeceksiniz (mysql>).
MySQL komut isteminde, veritabanının sürümünü kontrol edebilir ve mevcut veritabanlarını listeleyebilirsiniz:
SELECT VERSION();
SHOW DATABASES;
Çıktıda MySQL’in 8.0.x gibi bir sürümünü görmelisiniz. Ayrıca information_schema, mysql, performance_schema ve sys gibi varsayılan veritabanlarını da listelenmiş olarak göreceksiniz.
İşiniz bittiğinde, komut isteminden çıkmak için exit yazın:
EXIT;
MySQL Kullanıcı ve Veritabanı Oluşturma
Uygulamalarınız için root kullanıcısını kullanmak yerine, her uygulama veya servis için ayrı bir veritabanı ve kullanıcı oluşturmak en iyi güvenlik uygulamasıdır. Aşağıda yeni bir veritabanı ve kullanıcı oluşturma adımları verilmiştir.
Öncelikle root kullanıcısı olarak MySQL’e bağlanın:
mysql -u root -p
Parolanızı girin.
1. Yeni bir veritabanı oluşturun:
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Bu komut, mydatabase adında, UTF-8 desteği olan (emoji’ler dahil) bir veritabanı oluşturur.
2. Yeni bir kullanıcı oluşturun ve parola belirleyin:
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'MyStrongPassword123!';
Bu komut, localhost‘tan bağlanabilen myuser adında bir kullanıcı oluşturur ve MyStrongPassword123! parolasını atar. localhost yerine % kullanırsanız, kullanıcı herhangi bir host’tan bağlanabilir (ancak bu, güvenlik açısından dikkatli kullanılmalıdır). Parolayı kendi güçlü parolanızla değiştirmeyi unutmayın.
3. Yeni kullanıcıya veritabanı üzerinde yetkiler verin:
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
Bu komut, myuser kullanıcısına mydatabase üzerindeki tüm yetkileri verir. Belirli yetkiler vermek isterseniz ALL PRIVILEGES yerine SELECT, INSERT, UPDATE, DELETE gibi yetkileri listeleyebilirsiniz.
4. Yetki tablolarını yenileyin:
FLUSH PRIVILEGES;
Bu komut, MySQL’in yetki tablolarını yeniden yüklemesini sağlar ve yaptığınız değişikliklerin hemen geçerli olmasını sağlar.
5. MySQL komut isteminden çıkın:
EXIT;
Şimdi yeni oluşturduğunuz kullanıcı ile MySQL’e bağlanarak yetkilerini test edebilirsiniz:
mysql -u myuser -p
MyStrongPassword123! parolasını girin.
SHOW DATABASES;
USE mydatabase;
CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255));
INSERT INTO test_table (name) VALUES ('İlk Test Verisi');
SELECT * FROM test_table;
Yukarıdaki komutları başarıyla çalıştırabiliyorsanız, yeni kullanıcınız ve veritabanınız düzgün bir şekilde yapılandırılmıştır.
MySQL Yapılandırma Dosyaları
MySQL’in çalışma şeklini ve performansını etkileyen birçok ayar, yapılandırma dosyalarında bulunur. Ana yapılandırma dosyası genellikle /etc/mysql/mysql.conf.d/mysqld.cnf veya /etc/mysql/my.cnf (bu dosya genellikle diğer yapılandırma dosyalarını içerir) konumunda bulunur.
Bazı önemli ayarlar ve açıklamaları:
* bind-address: MySQL sunucusunun hangi IP adreslerini dinleyeceğini belirler. Varsayılan olarak 127.0.0.1 (localhost) olarak ayarlanmıştır, bu da sadece sunucunun kendisinden bağlantılara izin verildiği anlamına gelir. Eğer diğer makinelerden erişime izin vermek istiyorsanız, sunucunuzun IP adresini veya 0.0.0.0 (tüm IP adresleri) olarak değiştirmelisiniz. Ancak bu, güvenlik riski oluşturur ve sadece güvenlik duvarı ile korunan ortamlarda yapılmalıdır.
* innodb_buffer_pool_size: InnoDB depolama motorunun verileri önbelleğe almak için kullanacağı RAM miktarını belirler. Bu, MySQL performansının en kritik ayarlarından biridir. Genellikle toplam RAM’in %50-%70’i kadar ayarlanması önerilir. Örneğin: innodb_buffer_pool_size = 2G.
* max_connections: MySQL sunucusunun aynı anda kabul edebileceği maksimum bağlantı sayısını belirler. Uygulamanızın veya web sitenizin ihtiyaçlarına göre ayarlanmalıdır. Çok düşük olması bağlantı hatalarına, çok yüksek olması ise sistem kaynaklarının tükenmesine neden olabilir.
* log_error: Hata günlüklerinin yazılacağı dosyanın yolunu belirler. Sorun giderme için önemlidir.
* slow_query_log: Yavaş sorgu günlüğünü etkinleştirir. Performans sorunlarını tespit etmek için faydalıdır.
* long_query_time: Yavaş sorgu günlüğüne kaydedilecek sorguların minimum süresini belirler (saniye cinsinden).
Yapılandırma dosyasında herhangi bir değişiklik yaptıktan sonra, MySQL servisini yeniden başlatmanız gerekir:
sudo systemctl restart mysql
Değişikliklerin etkili olup olmadığını kontrol etmek için MySQL’e bağlanıp SHOW VARIABLES LIKE 'variable_name'; komutunu kullanabilirsiniz. Örneğin:
mysql -u root -p
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'max_connections';
EXIT;
Yedekleme ve Geri Yükleme Temelleri
Veritabanı yedeklemesi, herhangi bir sistem yöneticisinin veya geliştiricisinin öncelikli görevlerinden biridir. MySQL için en yaygın yedekleme aracı mysqldump‘tır.
Veritabanı Yedekleme:
Belirli bir veritabanını yedeklemek için:
mysqldump -u [kullanıcı_adı] -p [veritabanı_adı] > [yedek_dosyası_adı].sql
Örnek:
mysqldump -u root -p mydatabase > mydatabase_backup_$(date +%Y%m%d%H%M%S).sql
Bu komut, mydatabase veritabanının bir yedeğini mydatabase_backup_YYYYMMDDHHMMSS.sql formatında bir dosyaya kaydeder. Tüm veritabanlarını yedeklemek için --all-databases seçeneğini kullanabilirsiniz.
Veritabanı Geri Yükleme:
Yedeklediğiniz bir veritabanını geri yüklemek için:
mysql -u [kullanıcı_adı] -p [geri_yüklenecek_veritabanı_adı] < [yedek_dosyası_adı].sql
Örnek:
mysql -u root -p mydatabase < mydatabase_backup_20231027100000.sql
Dikkat: Geri yükleme işlemi, hedef veritabanındaki mevcut verileri üzerine yazacaktır. Geri yüklemeden önce veritabanının yedeğini almanız veya boş olduğundan emin olmanız önemlidir.
Debian 9 ve MySQL Sürümleri Hakkında Önemli Notlar
Bu rehber, Debian 9 üzerine en son MySQL sürümünü kurmanıza yardımcı olsa da, tekrar vurgulamak gerekir ki Debian 9 "Stretch" artık "End-of-Life" (EOL) durumundadır ve resmi güvenlik güncellemeleri almamaktadır. Bu, sunucunuzu ciddi güvenlik açıklarına karşı savunmasız bırakabilir.
* Güvenlik Riskleri: EOL bir işletim sistemi kullanmak, bilinen güvenlik açıklarının yamalanmaması anlamına gelir. Bu, özellikle internete açık bir sunucu için büyük bir risktir.
* Uyumluluk Sorunları: Yeni MySQL sürümleri, daha yeni Linux çekirdekleri veya sistem kütüphaneleriyle daha iyi entegre olabilir. Eski bir işletim sistemi üzerinde yeni bir MySQL sürümünü çalıştırmak, bazı bağımlılık sorunlarına veya beklenmedik davranışlara yol açabilir. Her ne kadar MySQL APT deposu bu bağımlılıkları yönetmeye çalışsa da, Debian 9'un temel paketleri güncel olmadığı için bazı kısıtlamalarla karşılaşılabilir.
* Performans: Daha yeni işletim sistemleri ve çekirdekler, genellikle donanım optimizasyonları ve performans iyileştirmeleri içerir. Eski bir işletim sistemi üzerinde yeni bir veritabanı çalıştırmak, potansiyel performans kazanımlarından tam olarak yararlanamamanıza neden olabilir.
Bu nedenle, mümkün olan en kısa sürede Debian'ın desteklenen bir sürümüne (Debian 10 "Buster", Debian 11 "Bullseye" veya Debian 12 "Bookworm") yükseltmeniz veya yeni bir sunucuya geçmeniz şiddetle tavsiye edilir. Bu rehberdeki kurulum, yalnızca belirli bir nedenle Debian 9'u kullanmaya devam etmeniz gereken, izole edilmiş veya geçici çözümler gerektiren senaryolar için bir kılavuz niteliğindedir.
Sorun Giderme (Troubleshooting)
Kurulum veya kullanım sırasında bazı sorunlarla karşılaşabilirsiniz. İşte yaygın sorunlar ve çözümleri:
* MySQL Servisi Başlamıyor:
* Günlükleri Kontrol Edin: MySQL'in neden başlamadığını anlamak için hata günlüklerini kontrol edin.
sudo systemctl status mysql
sudo journalctl -xe | grep mysql
* Yapılandırma Dosyası Hatası: /etc/mysql/my.cnf veya /etc/mysql/mysql.conf.d/mysqld.cnf dosyalarında bir yazım hatası veya geçersiz bir ayar olabilir. En son değişikliklerinizi gözden geçirin.
* Disk Alanı: Veritabanının yazma işlemi için yeterli disk alanı olmayabilir. df -h ile disk kullanımını kontrol edin.
* Port Çakışması: MySQL'in varsayılan portu (3306) başka bir servis tarafından kullanılıyor olabilir.
* MySQL'e Bağlanamıyorum:
* Servis Çalışıyor mu? İlk olarak sudo systemctl status mysql ile servisin çalıştığından emin olun.
* Kullanıcı İzinleri: Bağlanmaya çalıştığınız kullanıcının doğru parolası ve doğru host'tan (localhost veya belirli bir IP) bağlanma yetkisi olduğundan emin olun.
* Güvenlik Duvarı: Sunucunuzda bir güvenlik duvarı (ufw, iptables) etkinse, MySQL portu (3306) için gelen bağlantılara izin verdiğinden emin olun.
sudo ufw allow 3306/tcp # Eğer ufw kullanıyorsanız
* bind-address Ayarı: MySQL yapılandırma dosyasındaki bind-address ayarını kontrol edin. Eğer sadece 127.0.0.1 olarak ayarlıysa, uzaktan bağlantılara izin verilmez. Uzaktan erişim gerekiyorsa, bu ayarı sunucunuzun IP adresine veya 0.0.0.0 olarak değiştirmeniz ve MySQL servisini yeniden başlatmanız gerekir (ancak güvenlik duvarı koruması olmadan 0.0.0.0 kullanmaktan kaçının).
* Paket Bağımlılık Hataları:
* mysql-apt-config paketini kurarken veya apt install mysql-community-server komutunu çalıştırırken bağımlılık hataları alırsanız, sudo apt update komutunu tekrar çalıştırdığınızdan ve mysql-apt-config yapılandırmasında doğru MySQL sürümünü seçtiğinizden emin olun.
* Bazen sudo apt --fix-broken install komutu eksik bağımlılıkları düzeltmeye yardımcı olabilir.
Sonuç
Bu kapsamlı rehberde, Debian 9 "Stretch" üzerine MySQL'in en son stabil sürümünü resmi APT deposu aracılığıyla nasıl kuracağınızı adım adım öğrendiniz. Kurulum sürecinde sistem güncellemesinden depo eklemeye, MySQL sunucusunun kendisini kurmaktan güvenlik ayarlarını yapılandırmaya kadar tüm önemli adımları ele aldık. Ayrıca, yeni bir veritabanı ve kullanıcı oluşturma, temel yapılandırma ayarları, yedekleme/geri yükleme ve yaygın sorun giderme yöntemleri hakkında da bilgi edindiniz.
Unutulmamalıdır ki, Debian 9'un EOL (End-of-Life) statüsünde olması nedeniyle güvenlik riskleri taşımaktadır. Bu rehberdeki kurulum, özel durumlar veya test ortamları için geçerlidir. Üretim ortamlarında veya internete açık sunucularda her zaman desteklenen, güncel bir işletim sistemi ve yazılım sürümleri kullanmanız şiddetle tavsiye edilir.
Başarılı bir kurulumun ardından, MySQL sunucunuzu performans ve güvenlik açısından optimize etmek için daha fazla araştırma yapmanız ve ihtiyaçlarınıza göre ayarlamalar yapmanız önemlidir. Veritabanı izleme araçları kullanmak, düzenli yedeklemeler yapmak ve güvenlik duvarı kurallarını sıkılaştırmak, veritabanı yönetiminin ayrılmaz parçalarıdır.