sunucu.com.tr
Linux Sunucular

phpMyAdmin kurulumu: Rocky Linux, AlmaLinux ve Ubuntu 24.04'te adım adım kurulum ve güvenlik

CentOS 7 desteği bittiği için eski yum adımları artık geçerli değil. Bu rehberde phpMyAdmin'i Rocky Linux ve AlmaLinux'ta EPEL ile, Ubuntu 24.04'te apt ile kuruyor, ardından erişimi IP ile sınırlıyor, HTTPS açıyor ve giriş için ayrı bir veritabanı kullanıcısı tanımlıyoruz.

Güncellendi: 9 dk okuma

phpMyAdmin, MySQL ve MariaDB veritabanlarını tarayıcıdan yönetmenizi sağlayan bir web arayüzüdür. Veritabanı ve tablo oluşturma, kullanıcı yetkileri, içe ve dışa aktarma, doğrudan SQL çalıştırma gibi işleri komut satırına girmeden yapabilirsiniz. Bu rehberin eski sürümü CentOS 7 içindi. CentOS Linux 7, 30 Haziran 2024'te ömrünün sonuna ulaştı ve artık güvenlik güncellemesi almıyor (Red Hat duyurusu). Bu yüzden yazıyı desteklenen dağıtımlar için baştan yazdık: Rocky Linux ve AlmaLinux (9 ve 10) ile Ubuntu 24.04.

Kurulumun yanında, çoğu rehberde atlanan kısmı da ele alıyoruz: phpMyAdmin'i internete açık bırakmamak. Erişimi IP ile sınırlamak ve HTTPS kullanmak, bu aracı sunucuda tutacaksanız seçenek değil zorunluluktur.

Başlamadan önce: gereksinimler ve sürüm

phpMyAdmin'in güncel kararlı sürümü 5.2.3'tür ve 8 Ekim 2025'te yayımlanmıştır. Bu sürüm PHP 7.2 veya daha yenisini, MySQL ya da MariaDB tarafında da 5.5 veya daha yeni bir sürümü ister. Rocky, Alma ve Ubuntu 24.04'ün kendi depolarındaki PHP ve MariaDB sürümleri bu şartın rahatça üzerindedir.

Dağıtım depolarından gelen phpMyAdmin paketinin sürümü, projenin yayımladığı en son sürümden geride olabilir. Kurmadan önce depoda hangi sürümün olduğunu şu komutlarla görebilirsiniz:

bash
# Rocky Linux / AlmaLinux (EPEL etkinken)
dnf info phpMyAdmin

# Ubuntu 24.04
apt policy phpmyadmin

Paket yöneticisiyle kurmanın avantajı, güvenlik güncellemelerinin sistem güncellemesiyle birlikte gelmesidir. Bu rehberde paket yolunu izliyoruz.

Hazırlık listesi:

  • root ya da sudo yetkili bir kullanıcıyla SSH erişimi,
  • sunucuya erişeceğiniz bilgisayarın sabit genel IP adresi (IP kısıtlaması için gerekli),
  • HTTPS için sunucuya yönlendirilmiş bir alan adı ya da alt alan adı,
  • güncel bir sistem (dnf upgrade veya apt update && apt upgrade),
  • güvenlik duvarı değişikliklerinde bağlantı kesilirse kullanabileceğiniz konsol erişimi (sağlayıcı panelindeki web konsolu gibi).

Test için temiz bir sunucuyla başlamak isterseniz bulut sunucu üzerinde Rocky, Alma ya da Ubuntu imajıyla birkaç dakikada hazır bir makine açabilirsiniz.

Rocky Linux ve AlmaLinux'ta phpMyAdmin kurulumu

Rocky Linux ve AlmaLinux'ta phpMyAdmin ana depolarda yoktur, EPEL deposundan gelir. Adımlar iki dağıtımda aynıdır.

1. Apache, MariaDB ve PHP'yi kurun

bash
sudo dnf install -y httpd mariadb-server php php-mysqlnd php-mbstring
sudo systemctl enable --now httpd mariadb

Bu dağıtımlarda PHP, Apache altında php-fpm ile çalışır. Servislerin açık olduğunu kontrol edin:

bash
systemctl status httpd php-fpm mariadb --no-pager

Ardından MariaDB'nin temel güvenlik ayarlarını yapın: anonim kullanıcıları ve test veritabanını kaldırın, root için uzaktan girişi kapatın.

bash
sudo mysql_secure_installation

2. EPEL deposunu etkinleştirin

bash
sudo dnf install -y epel-release
sudo dnf config-manager --set-enabled crb

CRB deposu, bazı EPEL paketlerinin bağımlılıklarını sağlar. EPEL ve CRB ayrıntıları için EPEL repo kurulumu yazımıza bakabilirsiniz.

3. phpMyAdmin paketini kurun

bash
sudo dnf install -y phpMyAdmin

Paket, Apache yapılandırmasını /etc/httpd/conf.d/phpMyAdmin.conf dosyasına, phpMyAdmin ayarlarını /etc/phpMyAdmin/config.inc.php dosyasına yerleştirir. Varsayılan yapılandırma yalnız sunucunun kendisinden erişime izin verir; dışarıdan açtığınızda 403 hatası almanız bu yüzden normaldir.

4. Erişimi kendi IP adresinizle sınırlayın

/etc/httpd/conf.d/phpMyAdmin.conf dosyasını açın ve /usr/share/phpMyAdmin/ dizin bloğundaki Require local satırını bulun. Bu satırı silmeden, altına kendi IP adresinizi ekleyin:

apache
<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8
   Require local
   Require ip 203.0.113.25
</Directory>

203.0.113.25 yerine kendi genel IP adresinizi yazın. Birden fazla adres için satırı çoğaltabilir ya da Require ip 203.0.113.0/24 gibi bir aralık verebilirsiniz. Genel IP adresinizi bilmiyorsanız, erişeceğiniz bilgisayarda bir "IP adresim nedir" servisiyle öğrenin.

Yapılandırmayı test edip servisleri yeniden başlatın:

bash
sudo apachectl configtest
sudo systemctl restart httpd php-fpm

configtest çıktısında Syntax OK görmeden yeniden başlatmayın.

5. Güvenlik duvarında HTTP ve HTTPS'i açın

Kendini kilitleme uyarısı: Güvenlik duvarına kural eklemeden ya da kuralları yeniden yüklemeden önce SSH erişiminin (varsayılan 22 numaralı port ya da sizin kullandığınız özel port) izinli olduğunu doğrulayın. SSH izni yoksa kural uygulandığı anda bağlantınız kesilir ve sunucuya uzaktan erişimi kaybedersiniz; geri dönmek için yalnız sağlayıcı panelindeki konsol kalır. İşlemi ikinci bir SSH oturumu açıkken yapın ve yeni bir oturum açabildiğinizi test etmeden mevcut oturumu kapatmayın.

bash
sudo firewall-cmd --list-services
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-services

Son komutun çıktısında ssh, http ve https birlikte görünmelidir. SSH'yi farklı bir portta çalıştırıyorsanız ssh servisi yerine o portu (--add-port=PORT/tcp) ekleyin.

6. SELinux notu

Veritabanı aynı sunucudaysa SELinux varsayılan ayarlarıyla ek işlem gerekmez. phpMyAdmin'i başka bir sunucudaki MariaDB'ye bağlayacaksanız Apache'nin ağ üzerinden veritabanına bağlanmasına izin verin:

bash
sudo setsebool -P httpd_can_network_connect_db 1

SELinux'u kapatmak yerine bu tür hedefli izinleri kullanın.

Ubuntu 24.04'te phpMyAdmin kurulumu

Ubuntu 24.04'te phpMyAdmin, universe deposundaki paketle kurulur. Kurulum sırasında birkaç soru sorulur; bunları doğru yanıtlamak sonradan uğraşmamak için önemlidir.

1. Apache, MariaDB ve PHP'yi kurun

bash
sudo apt update
sudo apt install -y apache2 mariadb-server php libapache2-mod-php php-mysql php-mbstring
sudo mysql_secure_installation

universe deposu bulut imajlarında genelde açıktır. Paket bulunamazsa sudo add-apt-repository universe ile etkinleştirin.

2. phpMyAdmin paketini kurun

bash
sudo apt install -y phpmyadmin

Kurulum ekranında:

  • Web sunucusu sorusunda apache2 seçeneğini boşluk tuşuyla işaretleyin, sonra Enter'a basın. Yalnız Enter'a basarsanız seçim yapılmamış olur.
  • "dbconfig-common ile yapılandırılsın mı" sorusuna evet deyin ve phpMyAdmin'in kendi iç veritabanı kullanıcısı için güçlü bir parola belirleyin.

Apache yapılandırması etkinleşmediyse elle açın:

bash
sudo a2enconf phpmyadmin
sudo systemctl reload apache2

3. Erişimi IP ile sınırlayın

Ubuntu paketi varsayılan olarak her yerden erişime açıktır. /etc/phpmyadmin/apache.conf dosyasında <Directory /usr/share/phpmyadmin> bloğunun içine şu satırları ekleyin:

apache
<Directory /usr/share/phpmyadmin>
    # mevcut satırlar burada kalır
    Require ip 127.0.0.1
    Require ip 203.0.113.25
</Directory>

Ardından:

bash
sudo apache2ctl configtest
sudo systemctl reload apache2

4. UFW ile güvenlik duvarı

Kendini kilitleme uyarısı: UFW etkinleştirildiğinde gelen bağlantıların tamamı varsayılan olarak engellenir. ufw enable komutundan önce SSH iznini eklemezseniz açık oturumunuz kesilir ve sunucuya SSH ile bir daha bağlanamazsınız; yalnız sağlayıcı konsolundan girip kuralı düzeltmeniz gerekir. SSH'yi özel bir portta çalıştırıyorsanız OpenSSH yerine sudo ufw allow PORT/tcp ile o portu açın.

bash
sudo ufw allow OpenSSH
sudo ufw allow "Apache Full"
sudo ufw show added
sudo ufw enable
sudo ufw status

ufw show added çıktısında SSH kuralını görmeden ufw enable çalıştırmayın. ufw status çıktısında OpenSSH ve Apache Full satırlarını görmelisiniz. Ardından ikinci bir terminalden yeni bir SSH oturumu açarak erişimin sürdüğünü doğrulayın. Sunucuda Docker kullanıyorsanız, konteyner portlarının UFW kurallarını atlayabildiğini unutmayın.

phpMyAdmin'e hangi kullanıcıyla girilir?

Eski rehberdeki "kullanıcı adı ve şifre config.inc.php dosyasındadır" anlatımı yanıltıcıydı. phpMyAdmin'in kendi kullanıcı hesabı yoktur; giriş ekranında MySQL veya MariaDB kullanıcı hesabınızla oturum açarsınız. config.inc.php dosyası kimlik bilgisi tutmak için değil, sunucu ve oturum ayarları içindir.

Günlük iş için root yerine ayrı bir kullanıcı açın. Yalnız tek bir veritabanını yönetecekse yetkiyi o veritabanıyla sınırlayın:

bash
sudo mysql
sql
CREATE DATABASE uygulama_db;
CREATE USER 'pmayonetici'@'localhost' IDENTIFIED BY 'Uzun-ve-Rastgele-Bir-Parola';
GRANT ALL PRIVILEGES ON uygulama_db.* TO 'pmayonetici'@'localhost';
FLUSH PRIVILEGES;

Tüm veritabanlarını yönetecek bir yönetici hesabı gerekiyorsa ON *.* ve WITH GRANT OPTION kullanabilirsiniz; ama bu hesabın parolası root kadar değerlidir, ona göre saklayın.

Rocky ve Alma tarafında, giriş ekranında blowfish_secret ile ilgili bir uyarı görürseniz /etc/phpMyAdmin/config.inc.php dosyasında bu değere 32 karakterlik rastgele bir dize verin:

bash
openssl rand -base64 24
php
$cfg['blowfish_secret'] = 'buraya-uretilen-32-karakterlik-dize';

HTTPS ile güvenli erişim

phpMyAdmin girişinde veritabanı parolanız tarayıcıdan sunucuya gider. HTTP üzerinden bu bilgi açık metin olarak taşınır, bu yüzden IP kısıtlaması olsa bile HTTPS kullanın. Alan adınız sunucuya yönlendirilmişse Let's Encrypt sertifikasını certbot ile alabilirsiniz:

bash
# Rocky Linux / AlmaLinux (EPEL etkin)
sudo dnf install -y certbot python3-certbot-apache mod_ssl

# Ubuntu 24.04
sudo apt install -y certbot python3-certbot-apache
bash
sudo certbot --apache -d db.example.com

db.example.com yerine kendi alt alan adınızı yazın. certbot sertifikayı alır, Apache sanal sunucusunu yapılandırır ve HTTP isteklerini HTTPS'e yönlendirme seçeneği sunar. Yönlendirmeyi kabul edin. Yenilemenin çalıştığını test edin:

bash
sudo certbot renew --dry-run

Ücretsiz sertifika seçenekleri hakkında daha fazla bilgi için ücretsiz SSL sertifikası yazımıza göz atabilirsiniz.

Ek sertleştirme adımları

IP kısıtlaması ve HTTPS temel korumadır. Bunlara ek olarak şunları değerlendirin:

  • Varsayılan adresi değiştirin. Otomatik taramalar doğrudan /phpmyadmin ve /phpMyAdmin yollarını dener. Apache yapılandırmasındaki Alias satırını tahmin edilmesi zor bir yola çevirin, örneğin Alias /vt-yonetim-7k2 /usr/share/phpmyadmin. Bu tek başına güvenlik sağlamaz ama gürültüyü azaltır.
  • Web sunucusu düzeyinde ikinci bir parola ekleyin. htpasswd ile bir parola dosyası oluşturup dizin bloğuna temel kimlik doğrulama tanımlarsanız, phpMyAdmin giriş ekranına gelmeden önce bir parola daha sorulur.
  • Root ile uzaktan girişi kullanmayın. Yukarıdaki gibi yetkisi sınırlı bir kullanıcıyla çalışın.
  • Kullanmadığınızda kapatın. phpMyAdmin'e nadiren ihtiyacınız varsa yapılandırmayı devre dışı bırakın (sudo a2disconf phpmyadmin ya da Rocky/Alma'da conf dosyasının adını .conf dışında bir uzantıyla değiştirip Apache'yi yeniden yükleyin). Gerektiğinde açarsınız.
  • Alternatif olarak SSH tüneli kullanın. Erişimi tamamen yalnız Require local ile bırakıp kendi bilgisayarınızdan ssh -L 8080:localhost:80 kullanici@192.0.2.10 ile tünel açarsanız (192.0.2.10 yerine sunucunuzun adresi), phpMyAdmin'i http://localhost:8080/phpmyadmin adresinden kullanabilirsiniz. Bu durumda phpMyAdmin internete hiç görünmez.
  • Paketleri güncel tutun. dnf upgrade ya da apt upgrade düzenli çalışmalı; phpMyAdmin güncellemeleri de bu yolla gelir.

phpMyAdmin üzerinden içe ve dışa aktarma yapmadan önce veritabanının bir kopyasını almak iyi bir alışkanlıktır; komut satırıyla kopyalama için MySQL veritabanı kopyalama yazımıza bakabilirsiniz.

Kurulumu doğrulama kontrol listesi

Kurulumu bitirdikten sonra şunları tek tek kontrol edin:

  1. İzinli IP'den https://db.example.com/phpmyadmin biçimindeki adres (kendi alan adınız ve değiştirdiyseniz kendi yolunuzla) giriş ekranını açıyor.
  2. İzinli olmayan bir bağlantıdan (örneğin telefonun mobil verisi) aynı adres 403 döndürüyor.
  3. http:// ile girildiğinde HTTPS'e yönlendiriliyor.
  4. Oluşturduğunuz MySQL kullanıcısıyla giriş yapılabiliyor ve yalnız yetkili veritabanları görünüyor.
  5. sudo certbot renew --dry-run hatasız tamamlanıyor.
  6. Güvenlik duvarında SSH, HTTP ve HTTPS dışında gereksiz port açık değil ve yeni bir SSH oturumu sorunsuz açılıyor.

Sık yapılan hatalar ve çözümleri

403 Forbidden. Çoğu durumda neden IP kuralıdır. Genel IP adresiniz değişmiş olabilir ya da bir VPN veya ofis ağı üzerinden farklı bir adresle çıkıyor olabilirsiniz. Apache hata günlüğünde (/var/log/httpd/error_log veya /var/log/apache2/error.log) reddedilen istemci adresini görebilirsiniz.

Güvenlik duvarından sonra SSH bağlantısı koptu. SSH izni eklenmeden kural yüklenmiş ya da UFW etkinleştirilmiştir. Sağlayıcı panelindeki konsoldan girip sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload ya da sudo ufw allow OpenSSH ile izni ekleyin.

Boş sayfa ya da PHP kodu metin olarak görünüyor. PHP modülü ya da php-fpm çalışmıyordur. Rocky/Alma'da systemctl status php-fpm, Ubuntu'da libapache2-mod-php paketinin kurulu olduğunu kontrol edin.

"mysqli eklentisi eksik" uyarısı. Rocky/Alma'da php-mysqlnd, Ubuntu'da php-mysql paketi kurulmamıştır. Kurup web sunucusunu yeniden başlatın.

root ile giriş reddediliyor (1698 hatası). Ubuntu'daki MariaDB kurulumunda root hesabı varsayılan olarak işletim sistemi kullanıcısı üzerinden soket kimlik doğrulamasıyla çalışır; bu yüzden parola ile web girişi reddedilir. root'un davranışını değiştirmek yerine yukarıdaki gibi ayrı bir kullanıcı açın.

Büyük SQL dosyası içe aktarılamıyor. PHP'nin upload_max_filesize ve post_max_size değerleri dosyadan küçüktür. Bu değerleri büyütebilir ya da büyük dosyaları komut satırından mysql uygulama_db < yedek.sql ile yükleyebilirsiniz.

Ubuntu kurulumunda Apache yapılandırması oluşmadı. Web sunucusu seçim ekranında boşluk tuşuyla işaret koymadan Enter'a basılmıştır. sudo dpkg-reconfigure phpmyadmin ile soruları yeniden alabilir ya da a2enconf phpmyadmin ile yapılandırmayı açabilirsiniz.

Sık sorulan sorular

CentOS 7 sunucumda phpMyAdmin hâlâ çalışıyor, sorun olur mu?

Çalışıyor olması güvenli olduğu anlamına gelmez. CentOS 7, 30 Haziran 2024'te ömrünü tamamladığı için işletim sistemi, Apache, PHP ve phpMyAdmin paketleri artık güvenlik yaması almıyor. İnternete açık bir phpMyAdmin bu durumda ciddi risk taşır. Verilerinizi Rocky Linux, AlmaLinux ya da Ubuntu 24.04 kurulu yeni bir sunucuya taşımanızı ve phpMyAdmin'i bu rehberdeki gibi yeniden kurmanızı öneririz.

phpMyAdmin'i Nginx ile kullanabilir miyim?

Evet, phpMyAdmin bir PHP uygulamasıdır ve php-fpm ile Nginx altında da çalışır. Ancak dağıtım paketleri hazır yapılandırmayı Apache için getirir; Nginx'te konum (location) bloğunu, PHP yönlendirmesini ve IP kısıtlamasını (allow ve deny satırları) kendiniz yazmanız gerekir.

Rocky Linux 10 ve AlmaLinux 10'da adımlar farklı mı?

Temel akış aynıdır: EPEL'i etkinleştirir, dnf install phpMyAdmin ile kurar, Apache yapılandırmasında erişimi sınırlarsınız. Kurmadan önce dnf info phpMyAdmin ile paketin EPEL'de bulunduğunu ve sürümünü kontrol edin.

phpMyAdmin giriş şifremi unuttum, nereden bulurum?

phpMyAdmin'in ayrı bir şifresi yoktur; girişte MySQL veya MariaDB kullanıcı hesabınızı kullanırsınız. Parolayı unuttuysanız sunucuda sudo mysql ile bağlanıp ALTER USER 'kullanici'@'localhost' IDENTIFIED BY 'yeni-parola'; komutuyla yeni bir parola belirleyebilirsiniz.

IP adresim sabit değil, erişimi nasıl sınırlarım?

Değişken IP ile Require ip kuralı sürekli güncelleme ister. Bu durumda en pratik yol phpMyAdmin'i yalnız yerel erişime bırakıp SSH tüneliyle bağlanmaktır. Diğer bir seçenek de web sunucusu düzeyinde ikinci bir parola (temel kimlik doğrulama) ile HTTPS'i birlikte kullanmaktır.

Yazar

Kurucu, sunucu.com.tr · Bulut altyapısı ve yapay zeka otomasyonları

sunucu.com.tr ve Sunucu UK'in kurucusu. Bulut altyapısı, sanallaştırma ve sunucu yönetimi üzerine çalışıyor; şirketlerin iş yazılımlarını, web sitelerini ve yapay zeka iş yüklerini güvenli sunuculara taşıyor. Blogdaki rehberler sahada karşılaşılan kurulum, güvenlik ve taşıma işlerinden derlenir; yazılar yapay zeka desteğiyle hazırlanır ve kaynaklarla doğrulanır.

Tüm yazılarıProfil