Takip et

Ubuntu 16.04 Üzerine MySQL Kurulumu: Kapsamlı Bir Rehber

Ubuntu 16.04 Üzerine MySQL Kurulumu: Kapsamlı Bir Rehber Giriş Veritabanları, modern uygulamaların ve web sitelerinin temelini oluşturur. Bilgi

Ubuntu 16.04 Üzerine MySQL Kurulumu: Kapsamlı Bir Rehber

Giriş

Veritabanları, modern uygulamaların ve web sitelerinin temelini oluşturur. Bilgilerin depolanması, düzenlenmesi ve erişilebilir kılınması için kritik öneme sahiptirler. Bu veritabanı yönetim sistemleri arasında MySQL, açık kaynak kodlu yapısı, performansı ve geniş topluluk desteği sayesinde dünya genelinde en popüler seçeneklerden biridir. Web sunucularından kurumsal uygulamalara kadar geniş bir yelpazede kullanılan MySQL, özellikle LAMP (Linux, Apache, MySQL, PHP) veya LEMP (Linux, Nginx, MySQL, PHP) yığınlarının vazgeçilmez bir bileşenidir.

Ubuntu, Linux tabanlı işletim sistemleri arasında kullanıcı dostu arayüzü ve güçlü paket yönetim sistemi (APT) ile öne çıkan bir dağıtımdır. Bu rehberde, Ubuntu’nun nispeten eski ancak hala belirli senaryolarda kullanılmakta olan 16.04 sürümü (Xenial Xerus) üzerine MySQL veritabanı sunucusunun nasıl kurulacağını adım adım ve detaylı bir şekilde ele alacağız. Bu sürümün artık resmi güvenlik güncellemeleri almadığını ve yeni projeler için daha güncel Ubuntu sürümlerinin tercih edilmesi gerektiğini belirtmek önemlidir. Ancak mevcut bir Ubuntu 16.04 sisteminde MySQL’e ihtiyaç duyanlar veya bu spesifik kurulum sürecini öğrenmek isteyenler için bu rehber oldukça faydalı olacaktır.

Bu makale, MySQL’in temel kurulumundan güvenlik yapılandırmasına, kullanıcı ve veritabanı yönetimine, sık karşılaşılan sorunlara ve hatta kaldırma işlemlerine kadar geniş bir yelpazeyi kapsayacaktır. Amacımız, okuyucunun Ubuntu 16.04 üzerinde tam işlevsel ve güvenli bir MySQL ortamı kurabilmesi için gerekli tüm bilgileri sağlamaktır.

Ön Gereksinimler

MySQL kurulumuna başlamadan önce, sorunsuz bir süreç için bazı ön gereksinimlerin karşılandığından emin olmalıyız. Bu gereksinimler, kurulumun başarılı bir şekilde tamamlanması ve MySQL sunucusunun beklendiği gibi çalışması için temel teşkil eder.

Ubuntu 16.04 İşletim Sistemi

Bu rehber, özel olarak Ubuntu 16.04 (Xenial Xerus) için hazırlanmıştır. Sunucunuzda veya sanal makinenizde bu işletim sisteminin kurulu ve çalışır durumda olması gerekmektedir. Farklı Ubuntu sürümleri veya diğer Linux dağıtımları için adımlar benzer olsa da, paket isimleri veya yapılandırma detayları farklılık gösterebilir.

Sudo Yetkisine Sahip Bir Kullanıcı

Kurulum ve yapılandırma işlemleri, sistem düzeyinde değişiklikler yapmayı gerektirecektir. Bu nedenle, sudo komutunu kullanarak root ayrıcalıklarına sahip olabilecek bir kullanıcı hesabına ihtiyacınız vardır. Genellikle, Ubuntu kurulumu sırasında oluşturulan ilk kullanıcı hesabı bu yetkiye sahiptir. Root kullanıcısı ile doğrudan işlem yapmak yerine sudo kullanılması, güvenlik açısından daha iyi bir yaklaşımdır.

İnternet Bağlantısı

MySQL paketlerini Ubuntu depolarından indirmek için aktif bir internet bağlantısı zorunludur. Kurulum süreci boyunca sunucunuzun internete erişebildiğinden emin olun.

Temel Linux Bilgisi

Komut satırı arayüzü (CLI) kullanımı, temel Linux komutları (örneğin, ls, cd, cat, nano veya vi gibi metin düzenleyicileri) ve dosya izinleri hakkında temel bilgiye sahip olmak, kurulum ve yapılandırma sırasında karşılaşabileceğiniz durumları daha kolay yönetmenize yardımcı olacaktır.

Bu ön gereksinimler karşılandığında, MySQL kurulumuna geçmeye hazırız.

Sistem Güncellemesi

Herhangi bir yeni yazılım kurulumuna başlamadan önce, Ubuntu sisteminizin güncel olduğundan emin olmak en iyi uygulamalardan biridir. Sistem güncellemeleri, mevcut paketlerin en son sürümlerini yükler, güvenlik açıklarını kapatır ve olası bağımlılık sorunlarını önler. Bu adım, MySQL kurulum sürecinin daha pürüzsüz ilerlemesini sağlar.

Terminalinizi açın ve aşağıdaki komutları sırasıyla çalıştırın:

sudo apt update

Bu komut, sisteminizin paket listelerini günceller. Yani, Ubuntu depolarında hangi paketlerin hangi sürümlerinin mevcut olduğunu kontrol eder. Bu işlem, yeni paketlerin veya mevcut paketlerin güncel sürümlerinin keşfedilmesini sağlar.

sudo apt upgrade -y

apt upgrade komutu, apt update ile güncellenen paket listelerine göre, sisteminizde kurulu olan tüm paketleri en yeni sürümlerine yükseltir. -y bayrağı, komutun tüm sorulara otomatik olarak “evet” yanıtı vermesini sağlar, böylece yükseltme işlemi kesintisiz devam eder. Bu işlem biraz zaman alabilir, sisteminizin hızına ve güncellenecek paket sayısına bağlı olarak süresi değişir.

Güncelleme işlemi tamamlandıktan sonra, bazı durumlarda sistemin yeniden başlatılması gerekebilir. Özellikle çekirdek (kernel) güncellemeleri yapıldıysa, değişikliklerin tam olarak uygulanması için yeniden başlatma önerilir.

sudo reboot

Sistemi yeniden başlattıktan sonra, tekrar giriş yapın ve kuruluma devam etmeye hazırız. Bu adımları tamamlamak, temiz ve güncel bir temel üzerine MySQL’i kurmanızı sağlayacaktır.

MySQL Kurulumu

Sistemimiz güncel olduğuna göre, artık MySQL sunucusunu kurmaya başlayabiliriz. Ubuntu 16.04 depolarında MySQL’in kararlı bir sürümü mevcuttur ve apt paket yöneticisi aracılığıyla kolayca kurulabilir.

MySQL Sunucu Paketi Kurulumu

MySQL sunucusunu ve ilgili istemci araçlarını kurmak için aşağıdaki komutu kullanacağız:

sudo apt install mysql-server -y

Bu komut, mysql-server paketini kurar. Bu paket, MySQL sunucu yazılımını, bağımlılıklarını ve bazı temel araçları içerir. -y bayrağı, kurulum sırasında çıkan onay sorularına otomatik olarak “evet” yanıtı verir. Kurulum süreci, internet bağlantınızın hızına ve sisteminizin performansına bağlı olarak birkaç dakika sürebilir.

Kurulum tamamlandığında, MySQL sunucusu otomatik olarak başlatılacak ve sistem açılışında otomatik olarak çalışacak şekilde yapılandırılacaktır.

MySQL Servis Durumunun Kontrolü

Kurulumun başarılı olup olmadığını ve MySQL servisinin çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu kullanabiliriz:

sudo systemctl status mysql

Bu komutun çıktısında, MySQL servisinin durumu hakkında bilgi göreceksiniz. Genellikle “active (running)” (aktif (çalışıyor)) ifadesini görmeniz, MySQL sunucusunun başarıyla çalıştığı anlamına gelir.

Eğer servis çalışmıyorsa veya bir hata mesajı görüyorsanız, sorun giderme bölümüne bakmanız gerekebilir. Ancak çoğu durumda, kurulum bu aşamada sorunsuz tamamlanır.

MySQL Güvenlik Yapılandırması (mysql_secure_installation)

MySQL kurulumunun en kritik adımlarından biri güvenlik yapılandırmasıdır. Varsayılan olarak, MySQL bazı güvenlik açıklarıyla gelebilir. mysql_secure_installation betiği, bu açıkları kapatmak ve veritabanı sunucunuzu daha güvenli hale getirmek için tasarlanmıştır.

Aşağıdaki komutu çalıştırarak güvenlik betiğini başlatın:

sudo mysql_secure_installation

Bu betik size bir dizi soru soracaktır. Her bir soruyu dikkatlice okuyun ve ortamınıza uygun yanıtları verin:

1. VALIDATE PASSWORD PLUGIN: Bu eklenti, MySQL kullanıcı parolalarının gücünü kontrol etmenizi sağlar. Parolaların belirli bir karmaşıklık düzeyinde olmasını zorunlu kılar.
* Would you like to setup VALIDATE PASSWORD plugin? (Press y|Y for Yes, any other key for No):
* y yazıp Enter tuşuna basarsanız, parola gücü seviyelerini seçmeniz istenecektir (LOW, MEDIUM, STRONG). Genellikle MEDIUM veya STRONG tercih edilir. Bu eklentiyi etkinleştirmeyi seçerseniz, belirlediğiniz seviyeye uygun bir root parolası oluşturmanız gerekecektir. Eğer n yazıp Enter tuşuna basarsanız, bu adımı atlayabilirsiniz. Güvenlik için etkinleştirilmesi önerilir.

2. Set root password? (Press y|Y for Yes, any other key for No):
* y yazıp Enter tuşuna basarak root kullanıcısı için yeni bir parola belirlemeniz ŞİDDETLE TAVSİYE EDİLİR. Güçlü ve benzersiz bir parola seçtiğinizden emin olun. Bu parola, MySQL sunucusuna yönetici olarak erişim için kullanılacaktır. Parolayı iki kez girmeniz istenecektir.

3. Remove anonymous users? (Press y|Y for Yes, any other key for No):
* Anonim kullanıcılar, herkesin kullanıcı adı ve parola olmadan MySQL’e bağlanmasına izin verir. Bu, test ortamları için uygun olabilir ancak üretim ortamları için büyük bir güvenlik riski oluşturur. y yazıp Enter tuşuna basarak bunları kaldırmanız önerilir.

4. Disallow root login remotely? (Press y|Y for Yes, any other key for No):
* MySQL root kullanıcısının varsayılan olarak yalnızca localhost‘tan bağlanmasına izin verilir. Bu, uzaktan root erişimini engeller ve güvenlik açısından çok önemlidir. y yazıp Enter tuşuna basarak uzaktan root erişimini devre dışı bırakmanız önerilir. Uzaktan erişime ihtiyacınız varsa, bunun için ayrı bir kullanıcı oluşturmanız daha güvenlidir.

5. Remove test database and access to it? (Press y|Y for Yes, any other key for No):
* MySQL, varsayılan olarak “test” adında bir veritabanı ile gelir ve herkesin bu veritabanına erişmesine izin verir. Bu, güvenlik açığı oluşturabilir. y yazıp Enter tuşuna basarak test veritabanını kaldırmanız önerilir.

6. Reload privilege tables now? (Press y|Y for Yes, any other key for No):
* Önceki değişikliklerin (kullanıcı kaldırma, yetki değişiklikleri vb.) hemen etkili olması için yetki tablolarının yeniden yüklenmesi gerekir. y yazıp Enter tuşuna basarak bu işlemi yapmanız zorunludur.

Tüm bu adımları tamamladıktan sonra, MySQL sunucunuz daha güvenli bir yapılandırmaya sahip olacaktır. Artık MySQL’e bağlanabilir ve veritabanları oluşturmaya başlayabilirsiniz.

MySQL Kullanımı ve Temel Komutlar

MySQL sunucusu başarıyla kuruldu ve güvenliği yapılandırıldı. Şimdi, MySQL’e nasıl bağlanılacağını ve temel veritabanı işlemlerinin nasıl yapılacağını öğrenelim.

Root Kullanıcısı ile MySQL’e Giriş

MySQL’e komut satırından root kullanıcısı olarak bağlanmak için aşağıdaki komutu kullanın:

sudo mysql -u root -p

Bu komut, mysql istemcisini root kullanıcısı olarak başlatır. -p bayrağı, sizden root parolasını girmenizi isteyecektir. Güvenlik yapılandırması sırasında belirlediğiniz parolayı girin.

Başarılı bir şekilde giriş yaptığınızda, MySQL istemcisinin komut istemini göreceksiniz (mysql>). Artık SQL komutları çalıştırabilirsiniz.

Yeni Kullanıcı Oluşturma

Uygulamalarınız veya diğer hizmetleriniz için MySQL root kullanıcısını doğrudan kullanmak iyi bir güvenlik uygulaması değildir. Bunun yerine, her uygulama veya hizmet için ayrı, sınırlı yetkilere sahip kullanıcılar oluşturmak daha güvenlidir.

Yeni bir kullanıcı oluşturmak için MySQL istemcisinde aşağıdaki SQL komutunu çalıştırın:

CREATE USER 'yeni_kullanici'@'localhost' IDENTIFIED BY 'guclu_parola';

* yeni_kullanici: Oluşturmak istediğiniz kullanıcının adı.
* localhost: Kullanıcının yalnızca yerel makineden (sunucunun kendisinden) bağlanabileceğini belirtir. Eğer kullanıcının belirli bir IP adresinden veya herhangi bir yerden (%) bağlanmasına izin vermek istiyorsanız, localhost yerine o IP adresini veya % kullanabilirsiniz.
* guclu_parola: Bu kullanıcı için belirleyeceğiniz güçlü parola.

Örnek:

CREATE USER 'web_user'@'localhost' IDENTIFIED BY 'WebUserPass123!';

Veritabanı Oluşturma

Uygulamalarınızın verilerini depolayacağı bir veritabanına ihtiyacınız olacaktır. Yeni bir veritabanı oluşturmak için aşağıdaki komutu kullanın:

CREATE DATABASE yeni_veritabani;

* yeni_veritabani: Oluşturmak istediğiniz veritabanının adı.

Örnek:

CREATE DATABASE my_app_db;

Kullanıcıya Veritabanı Yetkisi Verme

Oluşturduğunuz kullanıcının, oluşturduğunuz veritabanına erişebilmesi için yetkilendirilmesi gerekir. GRANT komutu, kullanıcılara belirli veritabanları üzerinde belirli ayrıcalıklar atamak için kullanılır.

GRANT ALL PRIVILEGES ON yeni_veritabani.* TO 'yeni_kullanici'@'localhost';

* ALL PRIVILEGES: Kullanıcıya tüm ayrıcalıkları (SELECT, INSERT, UPDATE, DELETE vb.) verir. Daha kısıtlı yetkiler vermek isterseniz, ALL PRIVILEGES yerine belirli ayrıcalıkları virgülle ayırarak listeleyebilirsiniz (örneğin, SELECT, INSERT, UPDATE).
yeni_veritabani.: Bu, yeni_veritabani içindeki tüm tablolara (*) yetki verildiği anlamına gelir. Belirli bir tabloya yetki vermek isterseniz, yeni_veritabani.tablo_adi şeklinde belirtebilirsiniz.
* 'yeni_kullanici'@'localhost': Yetki verilen kullanıcı ve bağlanabileceği host.

Yetki değişikliklerinin hemen etkili olması için FLUSH PRIVILEGES komutunu çalıştırmanız gerekir:

FLUSH PRIVILEGES;

Örnek:

GRANT ALL PRIVILEGES ON my_app_db.* TO 'web_user'@'localhost';
FLUSH PRIVILEGES;

Uzaktan Erişim İçin Yapılandırma (İsteğe Bağlı)

Eğer MySQL sunucunuza başka bir makineden (örneğin, geliştirme bilgisayarınızdan) erişmeniz gerekiyorsa, bazı ek yapılandırmalar yapmanız gerekir.

MySQL Yapılandırma Dosyasını Düzenleme

MySQL’in varsayılan olarak yalnızca localhost (127.0.0.1) adresinden gelen bağlantıları dinlemesini sağlayan bir ayarı vardır. Bu ayarı değiştirmek için MySQL yapılandırma dosyasını düzenlemeniz gerekir.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Bu dosya içinde bind-address satırını bulun:

bind-address            = 127.0.0.1

Bu satırı yorum satırı haline getirebilirsiniz (# koyarak) veya sunucunuzun dış IP adresini veya 0.0.0.0 (tüm ağ arayüzlerinden gelen bağlantıları dinle) olarak değiştirebilirsiniz:

#bind-address            = 127.0.0.1
bind-address            = 0.0.0.0

Değişiklikleri kaydedin ve düzenleyiciden çıkın (Ctrl+X, Y, Enter).

Ardından, MySQL servisini yeniden başlatın:

sudo systemctl restart mysql
Güvenlik Duvarı (UFW) Ayarları

Eğer Ubuntu’nuzda UFW (Uncomplicated Firewall) etkinse, MySQL’in varsayılan portu olan 3306’ya dışarıdan gelen bağlantılara izin vermeniz gerekir.

Belirli bir IP adresinden erişime izin vermek için:

sudo ufw allow from 192.168.1.100 to any port 3306

Tüm IP adreslerinden erişime izin vermek için (güvenlik riski taşır, dikkatli kullanın):

sudo ufw allow 3306/tcp

UFW durumunu kontrol etmek için:

sudo ufw status

Bu adımları tamamladıktan sonra, yetkilendirdiğiniz kullanıcılar, belirlediğiniz hostlardan MySQL sunucunuza erişebilir.

MySQL Yönetimi

MySQL sunucunuzu kurduktan ve temel kullanıcıları yapılandırdıktan sonra, düzenli yönetim görevlerini yerine getirmeniz gerekebilir. Bu bölüm, MySQL servisinin nasıl yönetileceğini, yapılandırma dosyalarını ve yedekleme gibi önemli operasyonları ele alacaktır.

MySQL Servisini Yönetme

MySQL bir sistem servisidir ve systemctl komutu ile kolayca yönetilebilir.

* Servisi Durdurma:

sudo systemctl stop mysql

Bu komut, MySQL sunucusunu durdurur. Veritabanı operasyonları bu süre zarfında yapılamaz.

* Servisi Başlatma:

sudo systemctl start mysql

Bu komut, durdurulmuş bir MySQL sunucusunu başlatır.

* Servisi Yeniden Başlatma:

sudo systemctl restart mysql

Bu komut, MySQL sunucusunu durdurur ve tekrar başlatır. Genellikle yapılandırma dosyalarında değişiklik yaptıktan sonra bu komutu kullanmanız gerekir.

* Servis Durumunu Kontrol Etme:

sudo systemctl status mysql

Bu komut, MySQL servisinin mevcut durumunu (çalışıyor mu, durduruldu mu, hata mı var vb.) gösterir.

* Sistem Başlangıcında Otomatik Çalışmayı Etkinleştirme/Devre Dışı Bırakma:
Varsayılan olarak, MySQL sistem başlangıcında otomatik olarak çalışacak şekilde yapılandırılır.
Otomatik çalışmayı devre dışı bırakmak için:

sudo systemctl disable mysql

Otomatik çalışmayı yeniden etkinleştirmek için:

sudo systemctl enable mysql

MySQL Yapılandırma Dosyaları

MySQL’in davranışını ve performansını ayarlamak için çeşitli yapılandırma dosyaları kullanılır. Ubuntu 16.04’te ana yapılandırma dosyası /etc/mysql/mysql.cnf‘tir, ancak genellikle daha spesifik ayarlar /etc/mysql/conf.d/ ve /etc/mysql/mysql.conf.d/ dizinlerindeki dosyalarda bulunur.

En sık düzenlenen dosyalardan biri /etc/mysql/mysql.conf.d/mysqld.cnf‘tir. Bu dosya, MySQL sunucusunun (mysqld) temel ayarlarını içerir. Daha önce uzaktan erişim için bind-address ayarını bu dosyada değiştirmiştik.

Bazı yaygın yapılandırma ayarları şunları içerebilir:
* port: MySQL’in dinleyeceği port (varsayılan 3306).
* max_connections: Aynı anda izin verilen maksimum bağlantı sayısı.
* innodb_buffer_pool_size: InnoDB depolama motoru için ayrılan bellek miktarı. Bu, performansı önemli ölçüde etkileyebilir.
* log_error: Hata günlüklerinin kaydedildiği dosya yolu.

Herhangi bir yapılandırma dosyasında değişiklik yaptıktan sonra, değişikliklerin etkili olması için MySQL servisini yeniden başlatmayı unutmayın:

sudo systemctl restart mysql

Günlük Dosyaları (Log Files)

MySQL, sunucunun çalışması sırasında çeşitli günlük dosyaları oluşturur. Bu günlükler, sorun giderme, performans analizi ve güvenlik denetimi için çok değerlidir.

* Hata Günlüğü (Error Log): Sunucu başlatma/durdurma sorunları, kritik hatalar ve uyarılar bu günlükte bulunur. Varsayılan konumu genellikle /var/log/mysql/error.log veya /var/log/syslog olabilir (yapılandırmaya bağlı olarak).
* Genel Sorgu Günlüğü (General Query Log): Sunucu tarafından alınan her SQL sorgusunu kaydeder. Performans üzerinde ciddi etkisi olduğundan, genellikle sadece sorun giderme amacıyla kısa süreliğine etkinleştirilir.
* İkili Günlük (Binary Log – Binlog): Veritabanında yapılan tüm değişiklikleri (INSERT, UPDATE, DELETE) ikili formatta kaydeder. Veritabanı replikasyonu ve noktadan kurtarma (point-in-time recovery) için kullanılır.
* Yavaş Sorgu Günlüğü (Slow Query Log): Belirli bir süreden daha uzun süren sorguları kaydeder. Performans darboğazlarını tespit etmek için çok faydalıdır.

Günlük dosyalarını incelemek için cat, tail, grep gibi Linux komutlarını kullanabilirsiniz. Örneğin, hata günlüğünün son 10 satırını görmek için:

sudo tail /var/log/mysql/error.log

Yedekleme ve Geri Yükleme (mysqldump)

Veritabanı yedeklemesi, felaket kurtarma planının kritik bir parçasıdır. MySQL, mysqldump yardımcı programı ile veritabanlarını kolayca yedeklemeyi sağlar.

Veritabanı Yedekleme

Tek bir veritabanını yedeklemek için:

sudo mysqldump -u root -p yeni_veritabani > /yedekler/yeni_veritabani_yedek.sql

* -u root -p: Root kullanıcısı ile bağlanır ve parola ister. Daha kısıtlı yetkilere sahip bir yedekleme kullanıcısı oluşturmanız daha güvenlidir.
* yeni_veritabani: Yedeklenecek veritabanının adı.
* >: Çıktıyı belirtilen dosyaya yönlendirir.
* /yedekler/yeni_veritabani_yedek.sql: Yedek dosyasının kaydedileceği yol ve adı.

Tüm veritabanlarını yedeklemek için (sistem veritabanları dahil):

sudo mysqldump -u root -p --all-databases > /yedekler/tum_veritabanlari_yedek.sql

Bu komutları cron işleri ile otomatikleştirerek düzenli yedeklemeler yapmanız önerilir.

Veritabanı Geri Yükleme

Yedeklenen bir veritabanını geri yüklemek için önce boş bir veritabanı oluşturmanız ve ardından SQL dosyasını bu veritabanına aktarmanız gerekir:

CREATE DATABASE yeni_veritabani_geri_yuklenecek;

Ardından, terminalde:

sudo mysql -u root -p yeni_veritabani_geri_yuklenecek < /yedekler/yeni_veritabani_yedek.sql

Bu komut, yedek dosyasındaki SQL sorgularını yeni_veritabani_geri_yuklenecek veritabanına çalıştırarak verileri geri yükler.

Sık Karşılaşılan Sorunlar ve Çözümleri

MySQL kurulumu ve yönetimi sırasında bazı yaygın sorunlarla karşılaşılabilir. Bu bölümde, bu sorunları ve olası çözümlerini ele alacağız.

Bağlantı Hataları

"Can't connect to MySQL server on 'localhost' (111)" veya benzeri bir hata

Bu hata genellikle MySQL sunucusunun çalışmadığı anlamına gelir.
Çözüm:
1. MySQL servisinin durumunu kontrol edin:

sudo systemctl status mysql

2. Eğer servis durdurulmuşsa veya bir hata varsa, başlatmayı deneyin:

sudo systemctl start mysql

3. Hata günlüklerini kontrol edin (/var/log/mysql/error.log) veya journalctl -xe komutu ile daha fazla bilgi edinin.

"Access denied for user 'kullanici'@'host' (using password: YES/NO)"

Bu hata, yanlış kullanıcı adı, yanlış parola veya kullanıcının o host'tan bağlanma yetkisinin olmaması nedeniyle oluşur.
Çözüm:
1. Kullanıcı adını ve parolasını doğru girdiğinizden emin olun.
2. Kullanıcının bağlanmaya çalıştığı host'tan (örneğin, localhost veya belirli bir IP) erişim yetkisi olup olmadığını kontrol edin. Gerekirse GRANT komutu ile yetkileri güncelleyin ve FLUSH PRIVILEGES çalıştırın.

GRANT ALL PRIVILEGES ON veritabani_adi.* TO 'kullanici_adi'@'host_adi';
    FLUSH PRIVILEGES;

3. Eğer uzaktan bağlanmaya çalışıyorsanız, bind-address ayarını mysqld.cnf dosyasında kontrol edin ve güvenlik duvarınızın (UFW) 3306 portuna izin verdiğinden emin olun.

Parola Sorunları

Root parolasını unuttunuz

MySQL root parolasını unuttuysanız, parola sıfırlama işlemi yapmanız gerekir.
Çözüm:
1. MySQL servisini durdurun:

sudo systemctl stop mysql

2. MySQL'i güvenliksiz modda başlatın. Bu, parola olmadan bağlanmanıza izin verir.

sudo mysqld_safe --skip-grant-tables &

& işareti, komutun arka planda çalışmasını sağlar.
3. MySQL'e root olarak parola olmadan bağlanın:

mysql -u root

4. Parolayı sıfırlayın. MySQL 5.7+ için:

USE mysql;
    UPDATE user SET authentication_string = PASSWORD('YeniGucluParola') WHERE User = 'root';
    FLUSH PRIVILEGES;
    EXIT;

MySQL 5.6 ve öncesi için:

USE mysql;
    UPDATE user SET Password = PASSWORD('YeniGucluParola') WHERE User = 'root';
    FLUSH PRIVILEGES;
    EXIT;

Önemli Not: PASSWORD() fonksiyonu MySQL 8.0'dan itibaren kullanım dışıdır ve authentication_string doğrudan düz metin parola ile ayarlanabilir (ancak bu tavsiye edilmez, ALTER USER kullanın). Ancak Ubuntu 16.04'teki MySQL sürümü için yukarıdaki yöntem genellikle geçerlidir.
5. mysqld_safe işlemini sonlandırın (önce ps aux | grep mysqld_safe ile PID'yi bulun, sonra sudo kill PID).
6. MySQL servisini normal şekilde başlatın:

sudo systemctl start mysql

7. Yeni parolanızla giriş yapmayı deneyin.

Servis Başlatma Sorunları

MySQL servisi başlatılamıyor

Bu, genellikle yapılandırma dosyasındaki hatalar, disk alanı sorunları veya veri dizini izinleri gibi nedenlerden kaynaklanır.
Çözüm:
1. Hata günlüklerini kontrol edin: /var/log/mysql/error.log veya journalctl -xe. Bu günlükler, sorunun kökeni hakkında değerli bilgiler sağlayacaktır.
2. Yapılandırma dosyalarınızı kontrol edin (/etc/mysql/mysql.conf.d/mysqld.cnf ve diğerleri) sözdizimi hataları veya yanlış değerler için.
3. Disk alanınızı kontrol edin: df -h. Eğer disk doluysa, MySQL veri yazamaz ve başlatılamaz.
4. MySQL veri dizininin (genellikle /var/lib/mysql) doğru izinlere sahip olduğundan emin olun. Sahibi mysql:mysql olmalıdır.

sudo chown -R mysql:mysql /var/lib/mysql
    sudo chmod -R 755 /var/lib/mysql

Bu komutları dikkatli kullanın, yanlış izinler daha fazla soruna yol açabilir.

Yetkilendirme Sorunları

Yeni oluşturulan kullanıcıya yetkiler verilmesine rağmen hala erişim sorunları yaşanıyor

Çözüm:
1. FLUSH PRIVILEGES; komutunu çalıştırdığınızdan emin olun. Bu komut, MySQL'in yetki tablolarını yeniden yüklemesini sağlar.
2. Kullanıcının doğru host'tan bağlanmaya çalıştığından emin olun. Örneğin, kullanıcı web_user@localhost olarak tanımlanmışsa, 192.168.1.10 adresinden bağlanamaz. Ya kullanıcıyı web_user@'%' olarak tanımlayın (tüm hostlardan erişim) ya da web_user@'192.168.1.10' olarak spesifik bir giriş oluşturun.
3. MySQL önbelleğini temizlemek için MySQL servisini yeniden başlatmayı deneyin.

Bu sorun giderme ipuçları, MySQL kurulumu ve yönetimi sırasında karşılaşabileceğiniz çoğu yaygın sorunu çözmenize yardımcı olacaktır. Her zaman ilk adım, hata günlüklerini kontrol etmek ve sorunun kökenini anlamaya çalışmaktır.

MySQL Kaldırma (İsteğe Bağlı)

Eğer MySQL sunucusunu sisteminizden tamamen kaldırmanız gerekiyorsa, bu bölümdeki adımları takip edebilirsiniz. Bu işlem, MySQL paketlerini, yapılandırma dosyalarını ve isteğe bağlı olarak veritabanı dosyalarını kaldıracaktır.

MySQL Paketlerini Kaldırma

MySQL sunucu ve istemci paketlerini kaldırmak için apt remove komutunu kullanın:

sudo apt remove --purge mysql-server mysql-client mysql-common -y

* --purge: Bu bayrak, paketlerle birlikte ilgili yapılandırma dosyalarını da kaldırır. Bu, daha temiz bir kaldırma sağlar.
* mysql-server: MySQL sunucu paketidir.
* mysql-client: MySQL istemci araçları paketidir.
* mysql-common: MySQL'in temel ortak dosyalarını ve yapılandırmalarını içerir.

Bu komut, MySQL paketlerini ve yapılandırma dosyalarını kaldıracaktır. Ancak, veritabanı dosyaları (yani, verilerinizin depolandığı dizin) genellikle yerinde kalır.

Kalan Veritabanı Dosyalarını Kaldırma

Eğer MySQL'i tamamen kaldırmak ve tüm veritabanı verilerini silmek istiyorsanız, MySQL veri dizinini manuel olarak silmeniz gerekir. Bu adımı uygulamadan önce, bu dizindeki TÜM VERİLERİN kalıcı olarak silineceğini ve kurtarılamayacağını unutmayın. Önemli verileriniz varsa, önce yedekleyin!

MySQL'in varsayılan veri dizini /var/lib/mysql'dir. Bu dizini silmek için:

sudo rm -rf /var/lib/mysql

Bu komut, /var/lib/mysql dizinini ve içindeki tüm dosyaları ve alt dizinleri zorla ve yinelemeli olarak siler.

Kalan Günlük Dosyalarını ve Diğer Artıkları Temizleme

MySQL'in bıraktığı diğer dosyaları ve dizinleri temizlemek için aşağıdaki komutları kullanabilirsiniz:

sudo rm -rf /etc/mysql
sudo apt autoremove -y
sudo apt clean

* sudo rm -rf /etc/mysql: MySQL'in yapılandırma dizinini siler.
* sudo apt autoremove -y: Artık ihtiyaç duyulmayan (MySQL ile birlikte yüklenmiş ancak MySQL kaldırıldıktan sonra başka bir paket tarafından kullanılmayan) bağımlılık paketlerini kaldırır.
* sudo apt clean: İndirilen .deb paket dosyalarını APT önbelleğinden temizler.

Bu adımları tamamladıktan sonra, Ubuntu 16.04 sisteminizden MySQL tamamen kaldırılmış olacaktır.

Sonuç

Bu kapsamlı rehberde, Ubuntu 16.04 işletim sistemi üzerine MySQL veritabanı sunucusunun nasıl kurulacağını adım adım ele aldık. Kurulum öncesi hazırlıklardan başlayarak, sistem güncellemesi, MySQL paketlerinin yüklenmesi ve en kritik adım olan güvenlik yapılandırmasına kadar tüm süreçleri detaylı bir şekilde inceledik.

Ayrıca, MySQL sunucusuna nasıl bağlanılacağını, yeni kullanıcılar ve veritabanları oluşturmayı, bu kullanıcılara yetki vermeyi ve gerektiğinde uzaktan erişim için yapılandırma yapmayı öğrendik. MySQL servisinin yönetimi, yapılandırma dosyalarının anlaşılması, günlük dosyalarının incelenmesi ve veritabanı yedekleme/geri yükleme gibi önemli yönetim görevlerine de değindik. Son olarak, kurulum ve kullanım sırasında sık karşılaşılan sorunlara yönelik pratik çözümler sunarak, olası engelleri aşmanıza yardımcı olmayı hedefledik. İsteğe bağlı olarak, MySQL'i sistemden tamamen kaldırma adımlarını da gösterdik.

Unutulmamalıdır ki, Ubuntu 16.04 artık uzun süreli destek (LTS) sürecinin sonuna gelmiş ve güvenlik güncellemeleri almayan eski bir sürümdür. Yeni projeler için daha güncel ve desteklenen bir Ubuntu sürümü (örneğin, Ubuntu 20.04 LTS veya 22.04 LTS) kullanmanız şiddetle tavsiye edilir. Ancak, mevcut bir Ubuntu 16.04 ortamında MySQL'e ihtiyaç duyanlar veya bu spesifik kurulum sürecini öğrenmek isteyenler için bu rehberin eksiksiz bir kaynak olduğunu umuyoruz.

MySQL güçlü, esnek ve yaygın olarak kullanılan bir veritabanı çözümüdür. Bu rehberdeki bilgileri kullanarak, uygulamalarınız ve projeleriniz için sağlam bir veritabanı altyapısı kurabilir ve yönetebilirsiniz. Veritabanı yönetiminde sürekli öğrenme ve güvenlik en iyi uygulamalarını takip etme, sistemlerinizin istikrarlı ve güvenli kalması için kritik öneme sahiptir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.