phpMyAdmin, MariaDB ve MySQL için kullanışlı bir web arayüzüdür ve aynı zamanda internette en çok taranan adreslerden biridir. Bu rehber, VPS Linux Infrawire sunucunuzda iki kurulum yöntemini gösterir: Apache ile apt paketi ve Nginx arkasında elle kurulum. Ardından botları uzak tutan önlemleri anlatır.
📋 Ön koşullar
- root veya
sudoerişimi olan, Ubuntu 24.04 ya da Debian 12 yüklü bir VPS (IP adresi ve root parolası müşteri alanınızda yer alır) - MariaDB'li çalışan bir LAMP (seçenek A) veya LEMP (seçenek B) yığını
- Aşağıda
ADMIN_IPolarak anılan kendi genel IP adresiniz
1. Seçenek A: Apache ile apt paketini kurun
Bashapt update apt install -y phpmyadmin php-mbstring php-zip php-gd php-curl
Kurulum sihirbazında boşluk tuşuyla apache2 seçeneğini işaretleyin (yıldız görünmelidir), ardından veritabanını dbconfig-common ile yapılandırmak için "Evet" yanıtı verin ve phpMyAdmin'in dahili hesabı için bir parola belirleyin. Sonra Apache'yi yeniden yükleyin:
Bashphpenmod mbstring systemctl reload apache2
phpMyAdmin artık http://VPS_IP/phpmyadmin adresinde sunuluyor.
2. Özel bir veritabanı kullanıcısı oluşturun
Asla root ile giriş yapmayın. Ubuntu ve Debian'daki MariaDB'de root unix_socket kimlik doğrulaması kullanır ve phpMyAdmin onu zaten reddeder: bunu olduğu gibi bırakın ve sıradan bir hesap oluşturun.
Bashmariadb
SQLCREATE USER 'pmauser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD'; GRANT ALL PRIVILEGES ON appdb.* TO 'pmauser'@'localhost'; FLUSH PRIVILEGES; EXIT;
Yetkileri yalnızca kullanıcının gerçekten yönettiği veritabanları için verin. Yapılandırmada AllowNoPassword seçeneğini etkinleştirmeyin.
3. URL'yi gizleyin ve kimlik doğrulama ekleyin (Apache)
Varsayılan takma adı rastgele biriyle değiştirin ve bir parola dosyası oluşturun:
BashSUFFIX=$(openssl rand -hex 6); echo "pma-$SUFFIX" sed -i "s#Alias /phpmyadmin#Alias /pma-$SUFFIX#" /etc/phpmyadmin/apache.conf htpasswd -c /etc/phpmyadmin/.htpasswd USER
Ardından /etc/phpmyadmin/apache.conf içindeki mevcut <Directory /usr/share/phpmyadmin> bloğuna şu satırları ekleyin:
Apache1AuthType Basic 2AuthName 'Restricted area' 3AuthUserFile /etc/phpmyadmin/.htpasswd 4<RequireAll> 5 Require valid-user 6 Require ip ADMIN_IP 7</RequireAll>
<RequireAll> olmadan Apache iki koşuldan birini yeterli sayardı; bu blokla hem parola hem IP gerekir.
Bashapache2ctl configtest && systemctl reload apache2
4. Seçenek B: Nginx arkasında elle kurulum
Bağımlılıkları kurun, ardından en son sürümü resmi phpMyAdmin sitesinden indirin (VERSION yerine güncel sürüm numarasını yazın):
Bashapt install -y nginx php-fpm php-mysql php-mbstring php-xml php-zip php-gd php-curl apache2-utils cd /tmp wget https://files.phpmyadmin.net/phpMyAdmin/VERSION/phpMyAdmin-VERSION-all-languages.tar.gz tar xzf phpMyAdmin-VERSION-all-languages.tar.gz mkdir -p /var/www/pma mv phpMyAdmin-VERSION-all-languages /var/www/pma/pma-SECRET cd /var/www/pma/pma-SECRET cp config.sample.inc.php config.inc.php openssl rand -hex 16
pma-SECRET yerine rastgele bir ad kullanın. config.inc.php dosyasını düzenleyin ve üretilen değeri (32 karakter) gizli anahtar olarak yapıştırın:
PHP$cfg['blowfish_secret'] = 'RANDOM_32_CHARS'; $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Bashmkdir -p /var/lib/phpmyadmin/tmp chown www-data:www-data /var/lib/phpmyadmin/tmp chmod 700 /var/lib/phpmyadmin/tmp chown -R root:www-data /var/www/pma chmod 640 /var/www/pma/pma-SECRET/config.inc.php htpasswd -c /etc/nginx/.htpasswd USER
Bu bloğu sitenizin server { ... } bölümüne ekleyin. Debian 12'de soket php8.3-fpm.sock yerine php8.2-fpm.sock olur:
Nginx1location ^~ /pma-SECRET/ { 2 allow ADMIN_IP; 3 deny all; 4 auth_basic 'Restricted area'; 5 auth_basic_user_file /etc/nginx/.htpasswd; 6 root /var/www/pma; 7 index index.php; 8 9 location ~ \.php$ { 10 include snippets/fastcgi-php.conf; 11 fastcgi_pass unix:/run/php/php8.3-fpm.sock; 12 } 13}
Bashnginx -t && systemctl reload nginx
5. En güvenli seçenek: SSH tüneli
Herhangi bir genel erişim istemiyorsanız arayüzü yalnızca VPS'in kendisinden erişilebilir bırakın ve bilgisayarınızdan bir tünel açın:
Bashssh -L 8080:127.0.0.1:80 USER@VPS_IP
Oturum açık olduğu sürece http://127.0.0.1:8080/pma-SECRET/ adresine gidin. Apache'de blokta Require ip ADMIN_IP yerine Require local kullanın; Nginx'te allow 127.0.0.1; yazın. Bu, değişen ev IP'si sorununu da çözer.
6. Korumayı doğrulayın
Bashcurl -sI http://VPS_IP/phpmyadmin | head -n 1 curl -sI http://VPS_IP/pma-SECRET/ | head -n 1
İlk istek 404 döndürmelidir. İkincisi ADMIN_IP dışındaki her IP'den 403, sizin IP'nizden ise temel kimlik doğrulama parolasını girene kadar 401 döndürür. phpMyAdmin'i ayrıca yalnızca HTTPS üzerinden sunun; aksi halde parolalar düz metin olarak iletilir.
🛠️ Sorun giderme
404 Not Found. Takma ad veya location adı yazdığınız URL ile eşleşmiyor ya da web sunucusu yeniden yüklenmedi.
Size 403 Forbidden veriyor. Genel IP adresiniz değişmiş. ADMIN_IP değerini güncelleyin veya SSH tüneline geçin.
"The mbstring extension is missing" hatası veya boş sayfa. php-mbstring paketini kurun, ardından phpenmod mbstring (Apache) çalıştırın ya da php8.3-fpm servisini yeniden başlatın (Nginx).
root için Access denied. Bu beklenen ve istenen bir durumdur. 2. adımda oluşturduğunuz özel kullanıcıyla giriş yapın.
🎉 phpMyAdmin kuruldu, gizlendi ve kısıtlandı: veritabanlarınıza yalnızca siz erişebilirsiniz.