phpMyAdmin, kullanıcıların MySQL ile web arayüzü üzerinden etkileşimde bulunabilmesi için oluşturulmuştur. Bu kılavuzda, phpMyAdmin’i nasıl kuracağınızı ve güvenli hale getireceğinizi ele alacağız, böylece veritabanlarınızı Ubuntu sisteminizde güvenli bir şekilde yönetebilirsiniz.
Gerekli Ön Koşullar
Bu kılavuzu tamamlamak için aşağıdakilere ihtiyacınız olacak:
- Bir Ubuntu sunucusu. Bu sunucuda, yönetici ayrıcalıklarına sahip bir root olmayan kullanıcı ve
ufw
ile yapılandırılmış bir güvenlik duvarı olmalıdır. Bunun için, Ubuntu’nun başlangıç sunucu yapılandırma kılavuzunu takip edebilirsiniz. - Ubuntu sunucunuzda kurulmuş bir LAMP (Linux, Apache, MySQL ve PHP) yığını. Henüz tamamlanmadıysa, Ubuntu’da LAMP yığını kurulumuna ilişkin kılavuzu takip edebilirsiniz.
phpMyAdmin gibi yazılımları kullanırken önemli güvenlik hususları bulunmaktadır, çünkü:
- MySQL kurulumunuzla doğrudan iletişim kurar.
- MySQL kimlik bilgilerini kullanarak kimlik doğrulaması yapar.
- Rastgele SQL sorguları çalıştırır ve sonuçlarını döndürür.
Bu nedenlerle ve phpMyAdmin’in sık hedef alınan bir PHP uygulaması olmasından dolayı, phpMyAdmin’i düz HTTP bağlantıları üzerinden uzaktan sistemlerde çalıştırmamalısınız.
Eğer SSL/TLS sertifikası ile yapılandırılmış bir alan adınız yoksa, Apache’yi Let’s Encrypt ile güvence altına alma kılavuzunu takip edebilirsiniz. Bu, bir alan adı kaydetmenizi, sunucunuz için DNS kayıtları oluşturmanızı ve bir Apache Sanal Ana Bilgisayar ayarlamanızı gerektirecektir.
Adım 1 — phpMyAdmin’i Kurmak
phpMyAdmin’i, varsayılan Ubuntu depolarından APT kullanarak kurabilirsiniz.
Root olmayan sudo kullanıcınız ile, sunucunuzun paket indeksini güncelleyin:
sudo apt update
Bunun ardından, phpmyadmin paketini kurabilirsiniz. Bu paketle birlikte, resmi belgeler belirli işlevleri etkinleştirmek ve performansı artırmak için sunucunuza birkaç PHP uzantısı kurmanızı önerir.
Eğer ön koşul LAMP yığını eğitimini takip ettiyseniz, bu modüllerin bir kısmı php paketi ile birlikte yüklenmiş olmalıdır. Ancak aşağıdaki paketleri de kurmanız önerilir:
- php-mbstring: ASCII dışı dizeleri yönetmek ve dizeleri farklı kodlamalara dönüştürmek için bir modül.
- php-zip: .zip dosyalarını phpMyAdmin’e yüklemeyi destekleyen bir uzantı.
- php-gd: GD Grafik Kütüphanesi desteğini etkinleştirir.
- php-json: PHP’ye JSON serileştirme desteği sağlar.
- php-curl: PHP’nin farklı protokollerle farklı sunucularla etkileşimde bulunmasına olanak tanır.
Bu paketleri sisteminize kurmak için aşağıdaki komutu çalıştırın. Ancak lütfen, kurulum sürecinin phpMyAdmin’i doğru şekilde yapılandırmak için bazı seçimler yapmanızı gerektirdiğini unutmayın:
sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
Kurulum sırasında doğru yapılandırmak için şu seçenekleri seçmelisiniz:
- Sunucu seçimi için
apache2
’yi seçin.Uyarı: “apache2” vurgulanmış ama seçilmemiş olarak görünecektir. Apache’yi seçmezseniz, kurulum sırasında gerekli dosyalar taşınmayacaktır.SPACE
tuşuna basarak Apache’yi seçin, ardındanTAB
veENTER
tuşuna basarak ilerleyin. - Veritabanını yapılandırmak için dbconfig-common kullanmak istiyor musunuz sorusuna
Evet
(Yes) yanıtını verin.
Kurulum sırasında, phpMyAdmin için bir MySQL uygulama parolası belirlemeniz istenecektir.
Not: Eğer MySQL’i ön koşul LAMP yığını eğitiminin 2. adımında kurduysanız, şifre doğrulama eklentisini etkinleştirmeyi seçmiş olabilirsiniz. Şu anki durum itibarıyla, bu bileşeni etkinleştirmek, phpmyadmin kullanıcısı için bir şifre belirlemeye çalıştığınızda bir hata almanıza neden olacaktır:
phpMyAdmin şifre doğrulama hatası
Bunu çözmek için, kurulum sürecini durdurmak için iptal seçeneğini seçin. Ardından MySQL istemcisini açın:
sudo mysql
Eğer root MySQL kullanıcısı için şifre kimlik doğrulaması etkinleştirdiyseniz, bu komutu çalıştırın ve istendiğinde parolanızı girin:
mysql -u root -p
Aşağıdaki komutu çalıştırarak, Doğrulama Parola bileşenini devre dışı bırakın. Bu, onu gerçekten kaldırmaz, ancak MySQL sunucunuzda yüklenmesini engeller:
sql
Kodu kopyala
UNINSTALL COMPONENT "file://component_validate_password";
Ardından MySQL istemcisini kapatın:
exit
Sonra phpmyadmin paketini tekrar kurmayı deneyin ve beklenildiği gibi çalışacaktır:
sudo apt install phpmyadmin
phpMyAdmin yüklendikten sonra, tekrar MySQL istemcisini açabilir ve aşağıdaki komutu çalıştırarak Doğrulama Parola bileşenini yeniden etkinleştirebilirsiniz:
INSTALL COMPONENT "file://component_validate_password";
Kurulum süreci, phpMyAdmin Apache yapılandırma dosyasını /etc/apache2/conf-enabled/
dizinine ekler, burada otomatik olarak okunur. Apache ve PHP’yi phpMyAdmin ile çalışacak şekilde yapılandırmak için, bu bölümdeki tek kalan görev, mbstring PHP uzantısını açıkça etkinleştirmektir:
sudo phpenmod mbstring
Sonrasında, değişikliklerin tanınması için Apache’yi yeniden başlatın:
sudo systemctl restart apache2
Artık phpMyAdmin kurulmuş ve Apache ile çalışacak şekilde yapılandırılmıştır. Ancak MySQL veritabanlarınıza etkileşimde bulunmadan önce, MySQL kullanıcılarınızın programla etkileşimde bulunmak için gerekli ayrıcalıklara sahip olduğundan emin olmalısınız.
Adım 2 — Kullanıcı Kimlik Doğrulaması ve Ayrıcalıkları Ayarlamak
phpMyAdmin sunucunuza kurulduğunda, program için belirli altyapı süreçlerini yürüten phpmyadmin adlı bir veritabanı kullanıcısı otomatik olarak oluşturulur. Kurulum sırasında ayarladığınız yönetici parolası ile bu kullanıcı olarak oturum açmak yerine, ya root MySQL kullanıcınızla ya da phpMyAdmin arayüzü aracılığıyla veritabanlarını yönetmek için özel bir kullanıcı ile oturum açmanız önerilir.
MySQL Root Hesabı için Şifre Erişimini Yapılandırmak
Ubuntu sistemlerinde, MySQL 5.7 (ve üzeri sürümler) yüklendiğinde, root MySQL kullanıcısı varsayılan olarak auth_socket eklentisini kullanarak kimlik doğrulaması yapar. Bu, çoğu durumda güvenlik ve kullanılabilirlik açısından bazı avantajlar sağlasa da, phpMyAdmin gibi harici bir programın kullanıcıya erişmesine izin vermek gerektiğinde sorun yaratabilir.
phpMyAdmin’de root MySQL kullanıcısı olarak oturum açmak için, kimlik doğrulama yöntemini auth_socket’tan şifre ile kimlik doğrulama yapan bir yöntemle değiştirmeniz gerekecektir. Bunu yapmak için, terminalinizden MySQL istemcisini açın:
sudo mysql
Ardından, aşağıdaki komut ile her bir MySQL kullanıcı hesabının hangi kimlik doğrulama yöntemini kullandığını kontrol edin:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Örnek Çıktı:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$I:jOry?]Sy<|qhQRj3fBRQ43i4UJxrpm.IaT6lOHkgveJjmeIjJrRe6 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *A32BC4B74F7ECA5DB95C8C2F8004F83FF93B27BF5B320BDE1B8F857C00DFA055 | auth_socket | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
Aşağıdaki komut ile, root kullanıcı için kimlik doğrulama yöntemini mysql_native_password
ile değiştirebilirsiniz:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOUR_NEW_PASSWORD';
Yukarıdaki komutun YOUR_NEW_PASSWORD
kısmını, root MySQL kullanıcınız için belirlemek istediğiniz şifreyle değiştirmeyi unutmayın.
Daha sonra, değişikliklerin etkili olması için MySQL istemcisinden çıkın:
exit;
Ardından, phpMyAdmin arayüzüne giriş yapmayı deneyin. Şimdi root kullanıcınız ile oturum açabilmelisiniz.
Yeni Bir MySQL Kullanıcısı Oluşturmak
Veritabanlarını yönetmek için belirli ayrıcalıklara sahip bir kullanıcı oluşturmak daha güvenli bir yöntemdir. Aşağıdaki komut ile yeni bir MySQL kullanıcısı oluşturun. Bu kullanıcıya, gerekli veritabanları için belirli ayrıcalıklar verebilirsiniz:
sudo mysql -u root -p
Aşağıdaki SQL komutları ile yeni bir kullanıcı oluşturabilir ve ona gerekli ayrıcalıkları verebilirsiniz:
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'user_password';
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Burada myuser
kısmını oluşturmak istediğiniz kullanıcı adı ile, user_password
kısmını da belirleyeceğiniz şifre ile değiştirin.
Adım 3 — phpMyAdmin’e Erişim Sağlamak
Kurulum tamamlandığında, phpMyAdmin arayüzüne erişmek için tarayıcınızda aşağıdaki URL’yi ziyaret edin:
http://your_server_ip/phpmyadmin
Yerel sunucunuz için your_server_ip
kısmını localhost
veya sunucu IP adresinizle değiştirmeyi unutmayın.
Erişim sağladığınızda, daha önce oluşturduğunuz MySQL kullanıcısı veya root kullanıcısı ile oturum açın.
Adım 4 — phpMyAdmin Güvenliğini Sağlamak
phpMyAdmin, açık bir web arayüzü ile birlikte geldiğinden, güvenliğini artırmak için birkaç öneri uygulayabilirsiniz:
- HTTPS Kullanımı: phpMyAdmin’e erişiminizi HTTPS üzerinden yapmak için sunucunuzda SSL sertifikası kurmalısınız. Let’s Encrypt gibi ücretsiz bir çözüm kullanabilirsiniz.
- Güvenlik Duvarı Kuralları:
ufw
kullanarak phpMyAdmin’e erişimi kısıtlayabilirsiniz. Sadece belirli IP adreslerinden gelen bağlantılara izin vermek için aşağıdaki gibi bir kural ekleyebilirsiniz:
sudo ufw allow from your_ip_address to any port 80
sudo ufw allow from your_ip_address to any port 443
- Basic Auth ile Güvenlik: phpMyAdmin klasörünü korumak için Apache yapılandırma dosyasını güncelleyebilirsiniz. Aşağıdaki komut ile
.htaccess
dosyasını oluşturun:
sudo nano /etc/phpmyadmin/.htaccess
Aşağıdaki içeriği ekleyin:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Ardından, htpasswd dosyasını oluşturmak için aşağıdaki komutu kullanabilirsiniz:
sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
- Güvenlik Güncellemeleri: phpMyAdmin’i sürekli güncel tutmak, bilinen güvenlik açıklarına karşı korunmanızı sağlar.
Sonuç
phpMyAdmin’i Ubuntu sunucunuza başarılı bir şekilde kurdunuz ve güvenli bir şekilde yapılandırdınız. Artık veritabanlarınızı kolayca yönetebilir ve güncel kalmaya özen gösterebilirsiniz.