En Son MySQL Sürümünü Ubuntu 20.04’e Yükleme Rehberi
Ubuntu 20.04 (Focal Fossa) sunucunuza en son MySQL veritabanı sunucusunu kurmak, birçok web uygulaması ve sistem için temel bir adımdır. Ubuntu’nun varsayılan APT depoları genellikle kararlı ancak bazen güncel olmayan MySQL sürümlerini içerir. Bu rehberde, MySQL’in resmi APT deposunu kullanarak her zaman en güncel ve kararlı sürümünü nasıl kuracağınızı adım adım açıklayacağız. Bu yöntem, size en yeni özelliklere, performans iyileştirmelerine ve güvenlik yamalarına erişim sağlar.
MySQL, dünyanın en popüler açık kaynaklı ilişkisel veritabanı yönetim sistemidir (RDBMS). Veri depolama, yönetme ve alma süreçlerini kolaylaştırarak dinamik web sitelerinden karmaşık iş uygulamalarına kadar geniş bir yelpazede kullanılır. Bu kurulum rehberi, MySQL 8.0 veya en güncel sürümünü Ubuntu 20.04 sisteminize sorunsuz bir şekilde entegre etmenize yardımcı olacaktır.
Ön Hazırlıklar ve Sistem Güncelleme
Kuruluma başlamadan önce sisteminizin güncel olduğundan ve olası çakışmaları önlemek için eski MySQL kurulumlarının kaldırıldığından emin olmalıyız. Bu adımlar, temiz ve sorunsuz bir kurulum için kritik öneme sahiptir.
Sistemi Güncelleme
İlk olarak, paket listelerinizi güncelleyelim ve mevcut paketlerinizi en son sürümlerine yükseltelim. Bu, olası bağımlılık sorunlarını çözmeye yardımcı olur ve sisteminizi en iyi duruma getirir.
sudo apt update
sudo apt upgrade -y
Bu komutlar, sisteminizdeki mevcut paketleri kontrol eder ve varsa güncellemeleri yükler. -y bayrağı, tüm onay istemlerine otomatik olarak “evet” yanıtı vermenizi sağlar.
Mevcut MySQL Kurulumlarını Kaldırma (Opsiyonel)
Eğer sisteminizde daha önce bir MySQL veya MariaDB kurulumu varsa, yeni ve temiz bir kurulum yapmak için bunları tamamen kaldırmanız önerilir. Bu adım zorunlu değildir, ancak eski yapılandırma dosyalarının veya veritabanı kalıntılarının yeni kuruluma müdahale etmesini engeller.
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core- mysql-client-core- -y
sudo apt autoremove -y
sudo apt autoclean
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt purge mysql -y: MySQL ile ilgili tüm paketleri ve yapılandırma dosyalarını kaldırır.
* sudo apt autoremove -y: Kullanılmayan bağımlılıkları kaldırır.
* sudo apt autoclean: APT’nin indirilen paket arşivini temizler.
* sudo rm -rf /etc/mysql /var/lib/mysql: MySQL’in yapılandırma dizinlerini ve veri dizinini tamamen siler. Bu komut, mevcut tüm MySQL veritabanlarınızı siler. Eğer verilerinizi saklamak istiyorsanız, bu adımı atlamalı veya verilerinizi yedeklemelisiniz.
Bu adımları tamamladıktan sonra sisteminiz MySQL kurulumu için hazır hale gelecektir.
MySQL APT Deposunu Ekleme
En son MySQL sürümünü kurmanın en güvenilir yolu, MySQL’in resmi APT deposunu kullanmaktır. Bu depo, Ubuntu’nun varsayılan depolarında bulunmayan en güncel kararlı sürümleri doğrudan Oracle’dan sağlar.
MySQL APT Yapılandırma Paketini İndirme
İlk olarak, MySQL APT deposunu sisteminize eklemek için gerekli yapılandırma paketini indireceğiz. Bu paket, hangi MySQL sürümünü kurmak istediğinizi seçmenize olanak tanır.
MySQL APT deposu indirme sayfasına (https://dev.mysql.com/downloads/repo/apt/) giderek en son mysql-apt-config_*.deb paketini bulabilirsiniz. Bu rehber yazıldığı sırada güncel sürüm 0.8.22-1 idi.
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
Bu komut, yapılandırma paketini mevcut dizininize indirir.
Depo Yapılandırma Paketini Yükleme
İndirdiğiniz .deb paketini yükleyerek MySQL deposunu sisteminize ekleyin.
sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb
Bu komutu çalıştırdığınızda, interaktif bir menü ile karşılaşacaksınız. Bu menüde, hangi MySQL ürününü kurmak istediğinizi seçmeniz istenir.
1. MySQL Server & Cluster seçeneğini seçin ve Enter tuşuna basın.
2. Ardından, kurmak istediğiniz MySQL Server sürümünü seçin. Genellikle mysql-8.0 varsayılan olarak seçili gelir ve bu en güncel kararlı sürümdür. Başka bir sürüm istiyorsanız (örneğin MySQL 5.7), buradan seçebilirsiniz. Seçiminizi yaptıktan sonra Enter tuşuna basın.
3. Son olarak, Ok seçeneğini seçin ve Enter tuşuna basarak yapılandırmayı tamamlayın.
APT Depolarını Güncelleme
Yapılandırma paketi yüklendikten ve MySQL deposu sisteminize eklendikten sonra, APT paket listelerinizi tekrar güncellemeniz gerekir. Bu, sisteminizin yeni eklenen depodaki MySQL paketlerini tanımasını sağlar.
sudo apt update
Artık sisteminiz, MySQL’in en son sürümünü kurmaya hazır.
MySQL Sunucusunu Kurma
Depo yapılandırması tamamlandıktan sonra, MySQL sunucusunu kurmak oldukça basittir. Tek bir komutla tüm gerekli paketleri yükleyebilirsiniz.
sudo apt install mysql-server -y
Bu komut, MySQL sunucusunu ve gerekli tüm bağımlılıklarını sisteminize yükleyecektir. Kurulum sırasında size birkaç soru sorulabilir:
1. MySQL root kullanıcısı için şifre belirleme: Güçlü bir şifre belirlediğinizden emin olun. Bu şifre, veritabanı sunucunuza yönetici ayrıcalıklarıyla erişmek için kullanılacaktır. Şifreyi iki kez girmeniz istenecektir.
2. Varsayılan kimlik doğrulama yöntemi seçimi:
* “Use Strong Password Encryption for authentication (RECOMMENDED)”: Bu, yeni ve daha güvenli bir kimlik doğrulama yöntemi olan caching_sha2_password eklentisini kullanır. MySQL 8.0’ın varsayılanıdır ve çoğu yeni uygulama tarafından desteklenir.
* “Use Legacy Authentication Method (mysql_native_password)”: Bu, eski MySQL sürümlerinde kullanılan geleneksel kimlik doğrulama yöntemidir. Eğer eski uygulamalarınız varsa ve caching_sha2_password ile sorun yaşıyorlarsa bunu seçebilirsiniz. Ancak güvenlik açısından ilk seçenek önerilir.
Çoğu durumda, önerilen “Strong Password Encryption” seçeneğini seçmeniz en iyisidir. Seçiminizi yapın ve Enter tuşuna basın.
Kurulum tamamlandığında, MySQL sunucusu otomatik olarak başlayacaktır.
MySQL Güvenlik Yapılandırması
MySQL’i kurduktan sonra, veritabanı sunucunuzun güvenliğini sağlamak için mysql_secure_installation betiğini çalıştırmak çok önemlidir. Bu betik, varsayılan güvenlik açıklarını kapatmanıza yardımcı olur.
sudo mysql_secure_installation
Bu komutu çalıştırdığınızda, aşağıdaki adımları sırasıyla gerçekleştirmeniz istenecektir:
1. VALIDATE PASSWORD COMPONENT (Şifre Doğrulama Bileşeni): Bu bileşen, belirlediğiniz root şifresinin güvenliğini test eder ve güçlendirir.
* Would you like to setup VALIDATE PASSWORD component? (Press y|Y for Yes, any other key for No): y veya Y tuşuna basarak bu bileşeni kurmayı kabul edin.
* Ardından, şifre gücü seviyesini seçmeniz istenir: LOW, MEDIUM veya STRONG. MEDIUM genellikle iyi bir denge sunar. Seçiminizi yapıp Enter tuşuna basın.
* Daha önce belirlediğiniz root şifresini girmeniz istenecektir. Şifrenizin gücünü değerlendirecek ve eğer yeterince güçlü değilse değiştirmenizi isteyecektir.
2. Change the password for root?: Root şifrenizi değiştirmek isteyip istemediğiniz sorulur. Genellikle n (hayır) seçeneğini seçebilirsiniz, çünkü kurulum sırasında zaten bir şifre belirlemiştiniz.
3. Remove anonymous users? (Anonim kullanıcıları kaldır): Anonim kullanıcılar, herkesin kullanıcı adı veya şifre olmadan MySQL’e bağlanmasına izin verir. Bu bir güvenlik açığıdır. y veya Y tuşuna basarak bunları kaldırmanız şiddetle tavsiye edilir.
4. Disallow root login remotely? (Root kullanıcısının uzaktan girişini engelle): Root kullanıcısının yalnızca localhost’tan (yerel sunucudan) bağlanmasına izin vermek, güvenliği artırır. Uzaktan root erişimine ihtiyacınız yoksa y veya Y seçeneğini seçin. Eğer uzaktan root erişimine ihtiyacınız varsa, bunun güvenlik risklerini anladığınızdan emin olun ve n seçeneğini kullanın.
5. Remove test database and access to it? (Test veritabanını kaldır): MySQL, varsayılan olarak bir “test” veritabanı ile gelir. Bu veritabanı genellikle güvenlik açığı oluşturmasa da, üretim ortamlarında gereksizdir. y veya Y tuşuna basarak kaldırmanız önerilir.
6. Reload privilege tables now? (Ayrıcalık tablolarını şimdi yeniden yükle): Yapılan değişikliklerin hemen geçerli olması için ayrıcalık tablolarının yeniden yüklenmesi gerekir. y veya Y tuşuna basarak onaylayın.
Bu adımları tamamladığınızda, MySQL sunucunuzun temel güvenlik yapılandırması tamamlanmış olacaktır.
MySQL Servisini Yönetme ve Kontrol Etme
MySQL sunucusu, bir systemd servisi olarak çalışır. Bu, onu standart systemctl komutları ile kolayca yönetebileceğiniz anlamına gelir.
Servis Durumunu Kontrol Etme
MySQL servisinin çalıştığından emin olmak için durumunu kontrol edebilirsiniz:
systemctl status mysql
Çıktıda Active: active (running) ifadesini görmelisiniz. Bu, MySQL sunucusunun sorunsuz çalıştığını gösterir.
Servisi Başlatma, Durdurma ve Yeniden Başlatma
* Başlatma:
sudo systemctl start mysql
* Durdurma:
sudo systemctl stop mysql
* Yeniden Başlatma:
sudo systemctl restart mysql
* Sistem başlangıcında otomatik başlamayı etkinleştirme (varsayılan olarak etkindir):
sudo systemctl enable mysql
* Sistem başlangıcında otomatik başlamayı devre dışı bırakma:
sudo systemctl disable mysql
MySQL’e Bağlanma ve Temel Kullanım
MySQL sunucusu kurulduktan ve yapılandırıldıktan sonra, ona bağlanabilir ve veritabanları oluşturmaya başlayabilirsiniz.
Root Kullanıcısı Olarak Bağlanma
Kurulum sırasında belirlediğiniz şifre ile root kullanıcısı olarak bağlanabilirsiniz:
mysql -u root -p
Bu komutu çalıştırdıktan sonra, MySQL root şifrenizi girmeniz istenecektir. Eğer kurulum sırasında auth_socket kimlik doğrulama yöntemini seçtiyseniz (Ubuntu’nun varsayılan depolarından kurulumda sıkça görülür), şifre girmeden doğrudan bağlanmak için sudo mysql komutunu kullanabilirsiniz. Ancak bu rehberde resmi depodan kurulum yapıldığı ve mysql_secure_installation çalıştırıldığı için şifre tabanlı erişim daha olasıdır.
Şifrenizi doğru girdiğinizde, MySQL komut istemine düşeceksiniz (mysql>).
Veritabanı Oluşturma
Yeni bir veritabanı oluşturmak için aşağıdaki komutu kullanın:
CREATE DATABASE mydatabase;
mydatabase yerine kendi veritabanı adınızı yazın.
Yeni Bir Kullanıcı Oluşturma ve Yetkilendirme
Uygulamalarınız için doğrudan root kullanıcısını kullanmak yerine, her veritabanı için ayrı bir kullanıcı oluşturmak ve ona sadece gerekli yetkileri vermek iyi bir güvenlik uygulamasıdır.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'MyStrongPassword!';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
* CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'MyStrongPassword!';: myuser adında, sadece localhost‘tan bağlanabilen ve MyStrongPassword! şifresine sahip yeni bir kullanıcı oluşturur.
GRANT ALL PRIVILEGES ON mydatabase. TO 'myuser'@'localhost';: myuser‘a mydatabase veritabanındaki tüm tablolar üzerinde tam yetki verir. İhtiyacınıza göre ALL PRIVILEGES yerine SELECT, INSERT, UPDATE, DELETE gibi daha kısıtlı yetkiler verebilirsiniz.
* FLUSH PRIVILEGES;: Yetki tablolarını yeniden yükleyerek değişikliklerin hemen geçerli olmasını sağlar.
MySQL Komut İstemi’nden Çıkış
MySQL komut isteminden çıkmak için:
EXIT;
Sonuç ve Sıkça Sorulan Sorular (SSS)
Tebrikler! Ubuntu 20.04 sunucunuza MySQL’in en son sürümünü başarıyla yüklediniz ve temel güvenlik yapılandırmalarını tamamladınız. Artık uygulamalarınızı bu güçlü veritabanı sunucusuyla entegre etmeye hazırsınız. Unutmayın, veritabanı güvenliği sürekli bir süreçtir ve düzenli yedeklemeler almak her zaman önemlidir.
Sıkça Sorulan Sorular (SSS)
MySQL root şifremi unuttum, ne yapmalıyım?
MySQL root şifrenizi unuttuysanız, MySQL sunucusunu güvenli modda başlatarak şifreyi sıfırlayabilirsiniz. Bu genellikle MySQL servisini durdurmayı,
skip-grant-tables seçeneğiyle yeniden başlatmayı, şifreyi değiştirmeyi ve ardından servisi normal şekilde yeniden başlatmayı içerir. Bu işlem hassas olduğundan, dikkatli bir şekilde adımları takip eden bir rehber bulmanız önerilir.
MySQL’e uzaktan bağlanamıyorum, neden?
Uzaktan bağlantı sorunlarının birkaç yaygın nedeni vardır:
bind-addressyapılandırması: MySQL varsayılan olarak yalnızcalocalhost‘tan gelen bağlantılara izin verecek şekilde yapılandırılmış olabilir. Bu ayarı değiştirmek için/etc/mysql/mysql.conf.d/mysqld.cnfdosyasını düzenleyerekbind-address = 127.0.0.1satırınıbind-address = 0.0.0.0olarak değiştirmeniz veya yorum satırı yapmanız gerekebilir. Değişiklikten sonra MySQL servisini yeniden başlatın.- Güvenlik Duvarı (Firewall): Ubuntu’da UFW (Uncomplicated Firewall) etkinse, MySQL’in varsayılan portu olan 3306’ya gelen bağlantıları engelliyor olabilir. Uzaktan erişime izin vermek için
sudo ufw allow 3306/tcpkomutunu çalıştırmanız gerekebilir. - Kullanıcı yetkileri: Uzaktan bağlanmaya çalışan kullanıcının
@'localhost'yerine@'%'(herhangi bir host) veya belirli bir IP adresinden bağlanma yetkisi olması gerekir. Örneğin:CREATE USER 'myuser'@'%' IDENTIFIED BY 'MyStrongPassword!';veyaGRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'192.168.1.100';
Ubuntu’nun varsayılan deposundaki MySQL ile bu rehberdeki kurulumun farkı ne?
Ubuntu’nun varsayılan depoları genellikle MySQL’in kararlı, ancak genellikle en son sürümü olmayan bir sürümünü içerir. Bu rehberdeki kurulum, MySQL’in resmi APT deposunu kullanarak doğrudan Oracle tarafından sağlanan en güncel kararlı sürümü (örneğin MySQL 8.0’ın en son nokta sürümü) yüklemenizi sağlar. Bu, daha yeni özelliklere, performans iyileştirmelerine ve güvenlik yamalarına daha hızlı erişim anlamına gelir.
MySQL sürümünü nasıl kontrol ederim?
MySQL sürümünüzü kontrol etmek için MySQL komut istemine bağlanıp aşağıdaki komutu çalıştırabilirsiniz:
mysql -u root -p -e "SELECT VERSION();"
Veya MySQL komut istemine girdikten sonra:
mysql> SELECT VERSION();
Ayrıca, sistem paket yöneticisi aracılığıyla da kontrol edebilirsiniz:
apt show mysql-server | grep Version
Kurulum sırasında “Auth_socket” nedir?
auth_socket (veya unix_socket) bir kimlik doğrulama eklentisidir. Bu eklenti kullanıldığında, MySQL, bir kullanıcının Linux sistemindeki kullanıcı adının ve çalıştığı sürecin kimliğini doğrudan eşleştirerek kimlik doğrulaması yapar. Yani, sisteminizdeki root kullanıcısı olarak MySQL’e bağlanmaya çalıştığınızda, MySQL root kullanıcısının sistem kimliğini kontrol eder ve eşleşirse şifre sormadan doğrudan erişim sağlar. Bu, yerel erişim için kullanışlı ve güvenli bir yöntemdir, ancak uzaktan bağlantılara izin vermez.
mysql_secure_installation çalıştırmak zorunlu mu?
mysql_secure_installation çalıştırmak kesinlikle zorunlu değildir, ancak şiddetle tavsiye edilir. Bu betik, varsayılan olarak gelen birçok güvenlik açığını (anonim kullanıcılar, uzaktan root girişi, test veritabanı gibi) kapatır. Bu adımı atlamak, veritabanı sunucunuzu potansiyel güvenlik risklerine karşı savunmasız bırakabilir. Bu nedenle, her yeni MySQL kurulumundan sonra bu betiği çalıştırmak en iyi uygulamadır.