{"id":39349,"date":"2026-02-19T12:40:49","date_gmt":"2026-02-19T09:40:49","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=39349"},"modified":"2026-02-19T12:40:49","modified_gmt":"2026-02-19T09:40:49","slug":"phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/","title":{"rendered":"phpMyAdmin&#8217;i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama"},"content":{"rendered":"<p><body><\/p>\n<h2>phpMyAdmin&#8217;i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>phpMyAdmin, MySQL ve MariaDB veritabanlar\u0131n\u0131 web tabanl\u0131 bir aray\u00fcz \u00fczerinden y\u00f6netmek i\u00e7in kullan\u0131lan, a\u00e7\u0131k kaynakl\u0131 ve pop\u00fcler bir ara\u00e7t\u0131r. Veritaban\u0131 y\u00f6neticileri ve geli\u015ftiriciler i\u00e7in tablolar\u0131, s\u00fctunlar\u0131, indeksleri, ili\u015fkileri, kullan\u0131c\u0131lar\u0131, izinleri ve daha fazlas\u0131n\u0131 kolayca olu\u015fturma, de\u011fi\u015ftirme ve silme imkan\u0131 sunar. SQL sorgular\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rma, veritabanlar\u0131n\u0131 i\u00e7e ve d\u0131\u015fa aktarma gibi kritik i\u015flemleri grafiksel bir aray\u00fczle basitle\u015ftirir.<\/p>\n<p>Nginx, y\u00fcksek performansl\u0131, kararl\u0131 ve kaynak dostu bir web sunucusu ve ters proxy&#8217;dir. Apache HTTP Sunucusu&#8217;na k\u0131yasla daha az bellek t\u00fcketimi ve y\u00fcksek e\u015fzamanl\u0131 ba\u011flant\u0131lar\u0131 i\u015fleme yetene\u011fi ile bilinir. Ubuntu 20.04 LTS (Focal Fossa), uzun s\u00fcreli destek sunan pop\u00fcler bir Linux da\u011f\u0131t\u0131m\u0131 olup, sunucu ortamlar\u0131 i\u00e7in g\u00fcvenilir bir temel sa\u011flar.<\/p>\n<p>Bu makale, phpMyAdmin&#8217;i Nginx web sunucusu \u00fczerinde, Ubuntu 20.04 i\u015fletim sistemine nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve kurulum sonras\u0131 g\u00fcvenli\u011fini nas\u0131l sa\u011flayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klamaktad\u0131r. Ama\u00e7, veritaban\u0131 y\u00f6netimi i\u00e7in g\u00fc\u00e7l\u00fc ve g\u00fcvenli bir platform olu\u015fturmakt\u0131r. Nginx&#8217;in verimlili\u011fi ve phpMyAdmin&#8217;in kullan\u0131m kolayl\u0131\u011f\u0131 birle\u015fti\u011finde, veritaban\u0131 y\u00f6netimi s\u00fcre\u00e7leriniz \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zlanacakt\u0131r. Ancak, phpMyAdmin gibi web tabanl\u0131 y\u00f6netim ara\u00e7lar\u0131, do\u011fru yap\u0131land\u0131r\u0131lmazsa \u00f6nemli g\u00fcvenlik riskleri ta\u015f\u0131yabilir. Bu nedenle, makalenin g\u00fcvenlik ad\u0131mlar\u0131 b\u00f6l\u00fcm\u00fc b\u00fcy\u00fck \u00f6nem ta\u015f\u0131maktad\u0131r.<\/p>\n<h3>\u00d6nko\u015fullar<\/h3>\n<p>Bu k\u0131lavuzu takip etmeden \u00f6nce a\u015fa\u011f\u0131daki \u00f6nko\u015fullara sahip oldu\u011funuzdan emin olun:<\/p>\n<p>*   <strong>Ubuntu 20.04 Sunucusu:<\/strong> Temiz bir Ubuntu 20.04 sunucusu kurulumu.<br \/>\n*   <strong>Sudo Ayr\u0131cal\u0131klar\u0131na Sahip Kullan\u0131c\u0131:<\/strong> Sunucunuzda <code>sudo<\/code> ayr\u0131cal\u0131klar\u0131na sahip, root olmayan bir kullan\u0131c\u0131 hesab\u0131. G\u00fcvenlik nedeniyle do\u011frudan root kullan\u0131c\u0131s\u0131 ile \u00e7al\u0131\u015fmaman\u0131z \u00f6nerilir.<br \/>\n*   <strong>Temel A\u011f Bilgisi:<\/strong> SSH arac\u0131l\u0131\u011f\u0131yla sunucuya ba\u011flanma ve temel Linux komutlar\u0131n\u0131 kullanma bilgisi.<br \/>\n*   <strong>Domain Ad\u0131 (\u0130ste\u011fe Ba\u011fl\u0131 ama \u00d6nerilir):<\/strong> phpMyAdmin&#8217;e bir alan ad\u0131 \u00fczerinden eri\u015fmeyi planl\u0131yorsan\u0131z, alan ad\u0131n\u0131z\u0131n sunucunuzun IP adresine y\u00f6nlendirilmi\u015f olmas\u0131 gerekir. G\u00fcvenli bir HTTPS ba\u011flant\u0131s\u0131 i\u00e7in bu gereklidir.<br \/>\n*   <strong>G\u00fcvenlik Duvar\u0131 (UFW):<\/strong> Ubuntu&#8217;da varsay\u0131lan olarak gelen UFW (Uncomplicated Firewall) g\u00fcvenlik duvar\u0131n\u0131n temel olarak yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131. Bu, sunucunuza gelen istenmeyen ba\u011flant\u0131lar\u0131 engellemek i\u00e7in \u00f6nemlidir.<\/p>\n<p>Bu \u00f6nko\u015fullar\u0131n sa\u011flanmas\u0131, sorunsuz bir kurulum s\u00fcreci ve daha g\u00fcvenli bir ortam i\u00e7in temel olu\u015fturacakt\u0131r.<\/p>\n<h3>Ad\u0131m 1: Nginx ve PHP-FPM Kurulumu<\/h3>\n<p>phpMyAdmin, PHP ile yaz\u0131lm\u0131\u015f bir uygulamad\u0131r ve Nginx, PHP kodunu do\u011frudan \u00e7al\u0131\u015ft\u0131ramaz. Bunun yerine, PHP kodunu i\u015flemek i\u00e7in PHP-FPM (FastCGI Process Manager) kullan\u0131r. Bu ad\u0131mda Nginx ve PHP-FPM ile gerekli PHP mod\u00fcllerini kuraca\u011f\u0131z.<\/p>\n<h4>Sistem G\u00fcncellemesi<\/h4>\n<p>\u0130lk olarak, sunucunuzdaki paket listelerini g\u00fcncelleyelim ve mevcut paketleri y\u00fckseltelim:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h4>Nginx Kurulumu<\/h4>\n<p>Nginx web sunucusunu kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt install nginx -y<\/code><\/pre>\n<p>Nginx servisini kontrol ederek \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status nginx<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> ifadesini g\u00f6rmelisiniz.<\/p>\n<h4>PHP-FPM ve Gerekli PHP Mod\u00fcllerinin Kurulumu<\/h4>\n<p>phpMyAdmin&#8217;in d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in PHP-FPM ve baz\u0131 PHP mod\u00fcllerine ihtiyac\u0131 vard\u0131r. Ubuntu 20.04 varsay\u0131lan olarak PHP 7.4 ile gelir.<\/p>\n<pre><code class=\"language-bash\">sudo apt install php-fpm php-mysql php-cli php-json php-curl php-mbstring php-xml php-zip php-gd php-imagick php-bz2 php-intl -y<\/code><\/pre>\n<p>*   <code>php-fpm<\/code>: Nginx ile PHP kodunu i\u015flemek i\u00e7in gereklidir.<br \/>\n*   <code>php-mysql<\/code>: phpMyAdmin&#8217;in MySQL\/MariaDB veritabanlar\u0131na ba\u011flanmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>php-mbstring<\/code>: \u00c7ok baytl\u0131 karakter dizileri i\u00e7in destek sa\u011flar, phpMyAdmin i\u00e7in kritik \u00f6neme sahiptir.<br \/>\n*   <code>php-gd<\/code>: G\u00f6r\u00fcnt\u00fc i\u015fleme yetenekleri i\u00e7in gereklidir.<\/p>\n<p>PHP-FPM servisini kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status php7.4-fpm<\/code><\/pre>\n<p>Yine <code>active (running)<\/code> ifadesini g\u00f6rmelisiniz.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131 (UFW)<\/h4>\n<p>E\u011fer UFW kullan\u0131yorsan\u0131z, Nginx&#8217;in HTTP (80) ve HTTPS (443) portlar\u0131ndan gelen trafi\u011fe izin vermesi gerekir.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Nginx Full'\nsudo ufw enable\nsudo ufw status<\/code><\/pre>\n<p><code>Nginx Full<\/code> profili, hem HTTP hem de HTTPS trafi\u011fine izin verir. <code>sudo ufw enable<\/code> komutu g\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftirecektir. <code>sudo ufw status<\/code> komutu ile kurallar\u0131 kontrol edebilirsiniz.<\/p>\n<h3>Ad\u0131m 2: MySQL\/MariaDB Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>phpMyAdmin, bir veritaban\u0131 y\u00f6netim arac\u0131 oldu\u011fu i\u00e7in bir MySQL veya MariaDB veritaban\u0131 sunucusuna ihtiyac\u0131m\u0131z var. Bu b\u00f6l\u00fcmde MariaDB&#8217;yi kuraca\u011f\u0131z, \u00e7\u00fcnk\u00fc MySQL ile tam uyumludur ve a\u00e7\u0131k kaynak toplulu\u011fu taraf\u0131ndan aktif olarak desteklenmektedir.<\/p>\n<h4>MariaDB Kurulumu<\/h4>\n<p>MariaDB sunucusunu kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt install mariadb-server -y<\/code><\/pre>\n<p>MariaDB servisini kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status mariadb<\/code><\/pre>\n<p><code>active (running)<\/code> ifadesini g\u00f6rmelisiniz.<\/p>\n<h4>Veritaban\u0131 Sunucusunun G\u00fcvenli\u011fini Sa\u011flama<\/h4>\n<p>Yeni kurulan MariaDB sunucunuzun g\u00fcvenli\u011fini art\u0131rmak i\u00e7in bir g\u00fcvenlik beti\u011fi \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo mysql_secure_installation<\/code><\/pre>\n<p>Bu betik size bir dizi soru soracakt\u0131r:<\/p>\n<p>1.  <strong><code>Enter current password for root (enter for none):<\/code><\/strong>: \u0130lk kurulumda root \u015fifresi olmad\u0131\u011f\u0131 i\u00e7in do\u011frudan <code>Enter<\/code> tu\u015funa bas\u0131n.<br \/>\n2.  <strong><code>Set root password? [Y\/n]<\/code><\/strong>: <code>Y<\/code> tu\u015funa basarak g\u00fc\u00e7l\u00fc bir root \u015fifresi belirleyin. Bu \u015fifreyi asla unutmay\u0131n!<br \/>\n3.  <strong><code>Remove anonymous users? [Y\/n]<\/code><\/strong>: <code>Y<\/code> tu\u015funa basarak anonim kullan\u0131c\u0131lar\u0131 kald\u0131r\u0131n.<br \/>\n4.  <strong><code>Disallow root login remotely? [Y\/n]<\/code><\/strong>: G\u00fcvenlik i\u00e7in <code>Y<\/code> tu\u015funa basarak root kullan\u0131c\u0131s\u0131n\u0131n uzaktan giri\u015fini devre d\u0131\u015f\u0131 b\u0131rak\u0131n.<br \/>\n5.  <strong><code>Remove test database and access to it? [Y\/n]<\/code><\/strong>: <code>Y<\/code> tu\u015funa basarak test veritaban\u0131n\u0131 kald\u0131r\u0131n.<br \/>\n6.  <strong><code>Reload privilege tables now? [Y\/n]<\/code><\/strong>: <code>Y<\/code> tu\u015funa basarak ayr\u0131cal\u0131k tablolar\u0131n\u0131 yeniden y\u00fckleyin.<\/p>\n<h4>phpMyAdmin \u0130\u00e7in Veritaban\u0131 Kullan\u0131c\u0131s\u0131 Olu\u015fturma<\/h4>\n<p>phpMyAdmin&#8217;in veritaban\u0131na ba\u011flanabilmesi i\u00e7in \u00f6zel bir kullan\u0131c\u0131 olu\u015fturmak en iyi g\u00fcvenlik uygulamas\u0131d\u0131r. Do\u011frudan root kullan\u0131c\u0131s\u0131n\u0131 kullanmaktan ka\u00e7\u0131n\u0131n.<\/p>\n<p>MariaDB komut istemcisine root olarak giri\u015f yap\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo mysql -u root -p<\/code><\/pre>\n<p>Az \u00f6nce belirledi\u011finiz root \u015fifresini girin.<\/p>\n<p>Yeni bir veritaban\u0131 kullan\u0131c\u0131s\u0131 olu\u015fturun ve ona t\u00fcm veritabanlar\u0131 \u00fczerinde gerekli ayr\u0131cal\u0131klar\u0131 verin. <code>phpmyadminuser<\/code> yerine istedi\u011finiz bir kullan\u0131c\u0131 ad\u0131n\u0131 ve <code>YOUR_STRONG_PASSWORD<\/code> yerine g\u00fc\u00e7l\u00fc bir \u015fifreyi kullan\u0131n.<\/p>\n<pre><code class=\"language-sql\">CREATE USER 'phpmyadminuser'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD';\nGRANT ALL PRIVILEGES ON <em>.<\/em> TO 'phpmyadminuser'@'localhost' WITH GRANT OPTION;\nFLUSH PRIVILEGES;\nEXIT;<\/code><\/pre>\n<p><strong>Not:<\/strong> <code>GRANT ALL PRIVILEGES ON <em>.<\/em><\/code> komutu, bu kullan\u0131c\u0131ya t\u00fcm veritabanlar\u0131 \u00fczerinde tam yetki verir. Daha sonra &#8220;phpMyAdmin G\u00fcvenli\u011fini Sa\u011flama&#8221; b\u00f6l\u00fcm\u00fcnde bu yetkileri belirli veritabanlar\u0131yla k\u0131s\u0131tlamay\u0131 ele alaca\u011f\u0131z, bu daha g\u00fcvenli bir yakla\u015f\u0131md\u0131r.<\/p>\n<h3>Ad\u0131m 3: phpMyAdmin Kurulumu<\/h3>\n<p>\u015eimdi phpMyAdmin paketini Ubuntu depolar\u0131ndan kurabiliriz.<\/p>\n<pre><code class=\"language-bash\">sudo apt install phpmyadmin -y<\/code><\/pre>\n<p>Kurulum s\u0131ras\u0131nda size birka\u00e7 soru sorulacakt\u0131r:<\/p>\n<p>1.  <strong><code>Please choose the web server that should be automatically configured to run phpMyAdmin.<\/code><\/strong>: Burada Nginx listelenmeyecektir. Bu normaldir, \u00e7\u00fcnk\u00fc <code>apt<\/code> paketi genellikle Apache ve Lighttpd i\u00e7in otomatik yap\u0131land\u0131rma sunar. Herhangi bir se\u00e7im yapmadan <code>Tab<\/code> tu\u015fu ile <code><Ok><\/code> \u00fczerine gelip <code>Enter<\/code> tu\u015funa bas\u0131n. Nginx i\u00e7in yap\u0131land\u0131rmay\u0131 manuel olarak yapaca\u011f\u0131z.<br \/>\n2.  <strong><code>Configure database for phpmyadmin with dbconfig-common?<\/code><\/strong>: <code>Yes<\/code> se\u00e7ene\u011fini se\u00e7in. Bu, phpMyAdmin&#8217;in kendi dahili veritaban\u0131n\u0131 ve kullan\u0131c\u0131lar\u0131n\u0131 otomatik olarak yap\u0131land\u0131rmas\u0131na yard\u0131mc\u0131 olur.<br \/>\n3.  <strong><code>MySQL application password for phpmyadmin:<\/code><\/strong>: Burada <code>dbconfig-common<\/code> i\u00e7in bir parola girmeniz istenecektir. Bu parola, phpMyAdmin&#8217;in kendi dahili yap\u0131land\u0131rma veritaban\u0131 i\u00e7in kullan\u0131l\u0131r, MySQL root \u015fifrenizle kar\u0131\u015ft\u0131rmay\u0131n. G\u00fc\u00e7l\u00fc bir \u015fifre girin ve onaylay\u0131n.<\/p>\n<p>phpMyAdmin dosyalar\u0131 <code>\/usr\/share\/phpmyadmin<\/code> dizinine kurulacakt\u0131r.<\/p>\n<h3>Ad\u0131m 4: Nginx i\u00e7in phpMyAdmin Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>phpMyAdmin dosyalar\u0131n\u0131 kurduktan sonra, Nginx&#8217;in bu dosyalara eri\u015febilmesi ve PHP-FPM arac\u0131l\u0131\u011f\u0131yla i\u015fleyebilmesi i\u00e7in bir Nginx sunucu blo\u011fu (server block) yap\u0131land\u0131rmam\u0131z gerekiyor.<\/p>\n<h4>phpMyAdmin Dosyalar\u0131n\u0131 Nginx&#8217;in Eri\u015febilece\u011fi Bir Konuma Ba\u011flama<\/h4>\n<p>Nginx&#8217;in varsay\u0131lan web k\u00f6k dizini genellikle <code>\/var\/www\/html<\/code>&#8216;dir. phpMyAdmin&#8217;e bu dizin alt\u0131ndan eri\u015fmek i\u00e7in bir sembolik ba\u011flant\u0131 (symlink) olu\u015fturabiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/usr\/share\/phpmyadmin \/var\/www\/html\/phpmyadmin<\/code><\/pre>\n<p>Bu komut, <code>\/var\/www\/html\/phpmyadmin<\/code> adresine giden istekleri <code>\/usr\/share\/phpmyadmin<\/code> adresine y\u00f6nlendirecektir. \u0130sterseniz <code>\/var\/www\/html\/myadmin<\/code> gibi farkl\u0131 bir isim de kullanabilirsiniz.<\/p>\n<h4>Nginx Sanal Ana Bilgisayar (Server Block) Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>\u015eimdi Nginx i\u00e7in yeni bir yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m. Bu dosya, phpMyAdmin&#8217;e nas\u0131l eri\u015filece\u011fini belirleyecektir.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/phpmyadmin.conf<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi dosyaya yap\u0131\u015ft\u0131r\u0131n. <code>your_domain.com<\/code> ve <code>www.your_domain.com<\/code> k\u0131s\u0131mlar\u0131n\u0131 kendi alan ad\u0131n\u0131zla veya sunucunuzun IP adresiyle de\u011fi\u015ftirin.<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n    server_name your_domain.com www.your_domain.com; # Kendi alan ad\u0131n\u0131z veya sunucu IP'niz\n    root \/var\/www\/html\/phpmyadmin; # phpMyAdmin'in sembolik linki\n\n    index index.php index.html index.htm;\n\n    # phpMyAdmin'in k\u00f6k dizinine gelen istekleri i\u015fler\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    # PHP dosyalar\u0131n\u0131 PHP-FPM ile i\u015fler\n    location ~ \\.php$ {\n        include snippets\/fastcgi-php.conf;\n        fastcgi_pass unix:\/run\/php\/php7.4-fpm.sock; # PHP s\u00fcr\u00fcm\u00fcn\u00fc kontrol edin (\u00f6rn: php7.4-fpm.sock)\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        include fastcgi_params;\n    }\n\n    # Nginx taraf\u0131ndan i\u015flenmemesi gereken dosyalar\u0131 engeller\n    location ~ \/\\.ht {\n        deny all;\n    }\n\n    # phpMyAdmin'in dahili yap\u0131land\u0131rma dosyalar\u0131n\u0131 gizle\n    location ~ \/(config\\.inc\\.php|README|LICENSE|ChangeLog|setup\\.php)$ {\n        deny all;\n    }\n}<\/code><\/pre>\n<p>*   <strong><code>server_name<\/code><\/strong>: phpMyAdmin&#8217;e eri\u015fmek i\u00e7in kullanaca\u011f\u0131n\u0131z alan ad\u0131n\u0131 veya IP adresini buraya girin.<br \/>\n*   <strong><code>root<\/code><\/strong>: phpMyAdmin dosyalar\u0131n\u0131n bulundu\u011fu dizini g\u00f6sterir.<br \/>\n*   <strong><code>location ~ \\.php$<\/code><\/strong>: Bu blok, Nginx&#8217;in PHP dosyalar\u0131n\u0131 PHP-FPM arac\u0131l\u0131\u011f\u0131yla nas\u0131l i\u015fleyece\u011fini tan\u0131mlar. <code>fastcgi_pass<\/code> sat\u0131r\u0131ndaki PHP s\u00fcr\u00fcm\u00fcn\u00fcn (\u00f6rne\u011fin <code>php7.4-fpm.sock<\/code>) sunucunuzdaki PHP s\u00fcr\u00fcm\u00fcyle e\u015fle\u015fti\u011finden emin olun.<\/p>\n<h4>Yap\u0131land\u0131rmay\u0131 Etkinle\u015ftirme ve Nginx&#8217;i Yeniden Ba\u015flatma<\/h4>\n<p>Yeni yap\u0131land\u0131rma dosyas\u0131n\u0131 etkinle\u015ftirmek i\u00e7in <code>sites-enabled<\/code> dizinine bir sembolik ba\u011flant\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/phpmyadmin.conf \/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n<p>Nginx yap\u0131land\u0131rman\u0131zda bir hata olup olmad\u0131\u011f\u0131n\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t<\/code><\/pre>\n<p><code>test is successful<\/code> veya <code>syntax is ok<\/code> mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p>Her \u015fey yolundaysa, Nginx servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart nginx<\/code><\/pre>\n<h3>Ad\u0131m 5: phpMyAdmin G\u00fcvenli\u011fini Sa\u011flama<\/h3>\n<p>phpMyAdmin, veritaban\u0131 y\u00f6netiminiz i\u00e7in kritik bir ara\u00e7 oldu\u011fundan, g\u00fcvenli\u011fini sa\u011flamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu b\u00f6l\u00fcmde \u00e7e\u015fitli g\u00fcvenlik \u00f6nlemlerini uygulayaca\u011f\u0131z.<\/p>\n<h4>A. Giri\u015f Sayfas\u0131n\u0131 Gizleme (Alias veya Custom Path)<\/h4>\n<p>phpMyAdmin&#8217;in varsay\u0131lan olarak <code>\/phpmyadmin<\/code> yolu \u00fczerinden eri\u015filebilir olmas\u0131, k\u00f6t\u00fc niyetli ki\u015filerin hedefi haline gelmesini kolayla\u015ft\u0131r\u0131r. Bu yolu daha karma\u015f\u0131k ve tahmin edilemez bir yolla de\u011fi\u015ftirebiliriz.<\/p>\n<p>Nginx yap\u0131land\u0131rma dosyan\u0131z\u0131 (<code>\/etc\/nginx\/sites-available\/phpmyadmin.conf<\/code>) a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/phpmyadmin.conf<\/code><\/pre>\n<p>Mevcut <code>root \/var\/www\/html\/phpmyadmin;<\/code> sat\u0131r\u0131n\u0131 ve ana <code>location \/<\/code> blo\u011funu a\u015fa\u011f\u0131daki gibi de\u011fi\u015ftirin. <code>myadminsecretpath<\/code> yerine sadece sizin bilece\u011finiz benzersiz ve karma\u015f\u0131k bir yol kullan\u0131n.<\/p>\n<pre><code class=\"language-nginx\"># ... di\u011fer ayarlar ...\n\nserver_name your_domain.com www.your_domain.com;\n\n<h2>Bu sat\u0131r\u0131 silin veya yorum sat\u0131r\u0131 yap\u0131n:<\/h2>\n<h2>root \/var\/www\/html\/phpmyadmin;<\/h2>\n\n<h2>Yeni, gizli yolunuzu tan\u0131mlay\u0131n<\/h2>\nlocation \/myadminsecretpath {\n    alias \/var\/www\/html\/phpmyadmin\/; # phpMyAdmin'in ger\u00e7ek yoluna i\u015faret eder\n    index index.php index.html index.htm;\n    try_files $uri $uri\/ \/myadminsecretpath\/index.php?$args; # Bu sat\u0131r \u00f6nemli\n\n    # PHP dosyalar\u0131n\u0131 PHP-FPM ile i\u015fler (bu blo\u011fu da bu location i\u00e7ine ta\u015f\u0131y\u0131n)\n    location ~ \\.php$ {\n        include snippets\/fastcgi-php.conf;\n        fastcgi_pass unix:\/run\/php\/php7.4-fpm.sock;\n        fastcgi_param SCRIPT_FILENAME $request_filename; # $document_root$fastcgi_script_name yerine\n        include fastcgi_params;\n    }\n\n    # Nginx taraf\u0131ndan i\u015flenmemesi gereken dosyalar\u0131 engeller\n    location ~ \/\\.ht {\n        deny all;\n    }\n\n    # phpMyAdmin'in dahili yap\u0131land\u0131rma dosyalar\u0131n\u0131 gizle\n    location ~ \/(config\\.inc\\.php|README|LICENSE|ChangeLog|setup\\.php)$ {\n        deny all;\n    }\n}\n\n<h2>E\u011fer ba\u015fka bir web sitesi ayn\u0131 domain \u00fczerinde \u00e7al\u0131\u015f\u0131yorsa, ana domain i\u00e7in<\/h2>\n<h2>ayr\u0131 bir root ve location blo\u011fu ekleyebilirsiniz.<\/h2>\n<h2>E\u011fer sadece phpMyAdmin \u00e7al\u0131\u015f\u0131yorsa, bu yeterlidir.<\/code><\/pre>\n<\/h2>\n<p><strong>\u00d6nemli Not:<\/strong> <code>location ~ \\.php$<\/code> blo\u011funu <code>\/myadminsecretpath<\/code> blo\u011funun i\u00e7ine ta\u015f\u0131d\u0131k ve <code>fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<\/code> yerine <code>fastcgi_param SCRIPT_FILENAME $request_filename;<\/code> kulland\u0131k. Bu, <code>alias<\/code> ile birlikte \u00e7al\u0131\u015f\u0131rken do\u011fru dosya yolunu sa\u011flamak i\u00e7in gereklidir.<\/p>\n<p>Nginx&#8217;i yeniden ba\u015flatmay\u0131 unutmay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t\nsudo systemctl restart nginx<\/code><\/pre>\n<p>Art\u0131k phpMyAdmin&#8217;e <code>http:\/\/your_domain.com\/myadminsecretpath<\/code> adresinden eri\u015febileceksiniz.<\/p>\n<h4>B. Temel Kimlik Do\u011frulama (Basic Authentication)<\/h4>\n<p>phpMyAdmin&#8217;e eri\u015fmeden \u00f6nce ek bir HTTP kimlik do\u011frulama katman\u0131 ekleyebiliriz.<\/p>\n<p>1.  <strong><code>apache2-utils<\/code> Kurulumu<\/strong>: <code>htpasswd<\/code> komutunu kullanabilmek i\u00e7in bu paketi kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt install apache2-utils -y<\/code><\/pre>\n<p>2.  <strong>Kullan\u0131c\u0131 ve \u015eifre Olu\u015fturma<\/strong>: Bir kullan\u0131c\u0131 ad\u0131 (<code>your_nginx_user<\/code>) ve \u015fifre olu\u015fturun. Bu, phpMyAdmin giri\u015finden <em>\u00f6nce<\/em> sorulacak ayr\u0131 bir kimlik do\u011frulama katman\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo htpasswd -c \/etc\/nginx\/.htpasswd your_nginx_user<\/code><\/pre>\n<p>    <code>your_nginx_user<\/code> yerine kendi istedi\u011finiz kullan\u0131c\u0131 ad\u0131n\u0131 kullan\u0131n. \u015eifrenizi iki kez girmeniz istenecektir.<\/p>\n<p>3.  <strong>Nginx Yap\u0131land\u0131rmas\u0131na Ekleme<\/strong>: Nginx yap\u0131land\u0131rma dosyan\u0131z\u0131 tekrar a\u00e7\u0131n (<code>\/etc\/nginx\/sites-available\/phpmyadmin.conf<\/code>) ve <code>location \/myadminsecretpath<\/code> blo\u011funun i\u00e7ine a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin:<\/p>\n<pre><code class=\"language-nginx\">location \/myadminsecretpath {\n        auth_basic \"Restricted Access\";\n        auth_basic_user_file \/etc\/nginx\/.htpasswd;\n        alias \/var\/www\/html\/phpmyadmin\/;\n        # ... di\u011fer ayarlar ...\n    }<\/code><\/pre>\n<p>    Nginx&#8217;i yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t\n    sudo systemctl restart nginx<\/code><\/pre>\n<p>    \u015eimdi phpMyAdmin&#8217;e eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda, \u00f6nce Nginx taraf\u0131ndan belirlenen kullan\u0131c\u0131 ad\u0131 ve \u015fifre istenecek, ard\u0131ndan phpMyAdmin&#8217;in kendi giri\u015f ekran\u0131 gelecektir.<\/p>\n<h4>C. SSL\/TLS \u015eifrelemesi (Certbot ile Let&#8217;s Encrypt)<\/h4>\n<p>T\u00fcm trafi\u011fin \u015fifrelenmesi, hassas verilerinizi koruman\u0131n en kritik yollar\u0131ndan biridir. Let&#8217;s Encrypt, \u00fccretsiz SSL\/TLS sertifikalar\u0131 sa\u011flar ve Certbot arac\u0131 ile kurulumu kolayd\u0131r.<\/p>\n<p>1.  <strong>Certbot Kurulumu<\/strong>:<\/p>\n<pre><code class=\"language-bash\">sudo apt install certbot python3-certbot-nginx -y<\/code><\/pre>\n<p>2.  <strong>Sertifika Alma<\/strong>:<\/p>\n<pre><code class=\"language-bash\">sudo certbot --nginx -d your_domain.com -d www.your_domain.com<\/code><\/pre>\n<p>    Komut sizden e-posta adresi isteyecek ve hizmet \u015fartlar\u0131n\u0131 kabul etmenizi isteyecektir. Ayr\u0131ca HTTP trafi\u011fini otomatik olarak HTTPS&#8217;e y\u00f6nlendirmek isteyip istemedi\u011finizi soracakt\u0131r. <code>2: Redirect<\/code> se\u00e7ene\u011fini se\u00e7meniz \u00f6nerilir.<\/p>\n<p>    Certbot, Nginx yap\u0131land\u0131rma dosyan\u0131z\u0131 otomatik olarak g\u00fcncelleyecek ve SSL sertifikas\u0131n\u0131 kuracakt\u0131r.<\/p>\n<p>3.  <strong>Otomatik Yenilemeyi Test Etme<\/strong>: Let&#8217;s Encrypt sertifikalar\u0131 90 g\u00fcn ge\u00e7erlidir. Certbot, bunlar\u0131 otomatik olarak yenilemek i\u00e7in bir cron i\u015fi olu\u015fturur. Yenileme s\u00fcrecini test edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo certbot renew --dry-run<\/code><\/pre>\n<p>    Her \u015fey yolundaysa, <code>The dry run was successful<\/code> mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>D. IP Adresi K\u0131s\u0131tlamas\u0131<\/h4>\n<p>E\u011fer phpMyAdmin&#8217;e sadece belirli IP adreslerinden eri\u015fim sa\u011flamak istiyorsan\u0131z, Nginx yap\u0131land\u0131rmas\u0131na IP tabanl\u0131 k\u0131s\u0131tlamalar ekleyebilirsiniz.<\/p>\n<p>Nginx yap\u0131land\u0131rma dosyan\u0131z\u0131 (<code>\/etc\/nginx\/sites-available\/phpmyadmin.conf<\/code>) a\u00e7\u0131n ve <code>location \/myadminsecretpath<\/code> blo\u011funun i\u00e7ine a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin. <code>YOUR_IP_ADDRESS<\/code> yerine kendi IP adresinizi yaz\u0131n.<\/p>\n<pre><code class=\"language-nginx\">location \/myadminsecretpath {\n    allow YOUR_IP_ADDRESS; # \u0130zin verilen IP adresi\n    deny all;               # Di\u011fer t\u00fcm IP adreslerini engelle\n    alias \/var\/www\/html\/phpmyadmin\/;\n    # ... di\u011fer ayarlar ...\n}<\/code><\/pre>\n<p>Birden fazla IP adresine izin vermek i\u00e7in birden fazla <code>allow<\/code> sat\u0131r\u0131 ekleyebilirsiniz.<br \/>\nNginx&#8217;i yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t\nsudo systemctl restart nginx<\/code><\/pre>\n<h4>E. phpMyAdmin Yap\u0131land\u0131rma Dosyas\u0131 G\u00fcvenli\u011fi (<code>config.inc.php<\/code>)<\/h4>\n<p>phpMyAdmin&#8217;in ana yap\u0131land\u0131rma dosyas\u0131 olan <code>config.inc.php<\/code> \u00fczerinde baz\u0131 g\u00fcvenlik iyile\u015ftirmeleri yapabiliriz.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/phpmyadmin\/config.inc.php<\/code><\/pre>\n<p>1.  <strong><code>blowfish_secret<\/code> Anahtar\u0131<\/strong>: Bu anahtar, \u00e7erez tabanl\u0131 kimlik do\u011frulama i\u00e7in kullan\u0131l\u0131r ve \u00e7ok g\u00fc\u00e7l\u00fc, rastgele bir dize olmal\u0131d\u0131r. E\u011fer bo\u015fsa veya zay\u0131fsa, phpMyAdmin giri\u015f ekran\u0131nda bir uyar\u0131 g\u00f6receksiniz.<\/p>\n<pre><code class=\"language-php\">$cfg['blowfish_secret'] = 'YOUR_SUPER_STRONG_RANDOM_STRING_OF_32_CHARS_OR_MORE'; \/<em> YOU MUST FILL IN THIS FOR COOKIE AUTH! <\/em>\/<\/code><\/pre>\n<p>    G\u00fc\u00e7l\u00fc bir dize olu\u015fturmak i\u00e7in \u00f6rne\u011fin a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">openssl rand -base64 32<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131y\u0131 kopyalay\u0131p <code>blowfish_secret<\/code> olarak yap\u0131\u015ft\u0131r\u0131n.<\/p>\n<p>2.  <strong><code>AllowArbitraryServers<\/code><\/strong>: Bu ayar, giri\u015f ekran\u0131nda herhangi bir sunucuya ba\u011flanma se\u00e7ene\u011fini etkinle\u015ftirir veya devre d\u0131\u015f\u0131 b\u0131rak\u0131r. G\u00fcvenlik i\u00e7in devre d\u0131\u015f\u0131 b\u0131rakmak iyi bir fikirdir.<\/p>\n<pre><code class=\"language-php\">$cfg['AllowArbitraryServers'] = false;<\/code><\/pre>\n<p>3.  <strong><code>LoginCookieValidity<\/code><\/strong>: Giri\u015f \u00e7erezinin ge\u00e7erlilik s\u00fcresini saniye cinsinden ayarlar (varsay\u0131lan 1440 saniye = 24 dakika). Daha k\u0131sa bir s\u00fcre, oturum ka\u00e7\u0131r\u0131lma riskini azalt\u0131r.<\/p>\n<pre><code class=\"language-php\">$cfg['LoginCookieValidity'] = 1440; \/\/ 24 dakika<\/code><\/pre>\n<p>4.  <strong>Hata Mesajlar\u0131n\u0131 Gizleme<\/strong>: \u00dcretim ortamlar\u0131nda hata mesajlar\u0131n\u0131 gizlemek, sald\u0131rganlara sisteminiz hakk\u0131nda bilgi vermeyi engeller.<\/p>\n<pre><code class=\"language-php\">$cfg['Error_Handler']['display'] = false;<\/code><\/pre>\n<p>De\u011fi\u015fiklikleri kaydedin ve dosyay\u0131 kapat\u0131n.<\/p>\n<h4>F. phpMyAdmin Kullan\u0131c\u0131lar\u0131n\u0131 K\u0131s\u0131tlama<\/h4>\n<p>\u00d6nceden olu\u015fturdu\u011fumuz <code>phpmyadminuser<\/code> kullan\u0131c\u0131s\u0131na t\u00fcm veritabanlar\u0131 \u00fczerinde <code>GRANT ALL PRIVILEGES<\/code> vermi\u015ftik. Bu, kurulumu kolayla\u015ft\u0131rsa da, g\u00fcvenlik a\u00e7\u0131s\u0131ndan ideal de\u011fildir. phpMyAdmin kullan\u0131c\u0131s\u0131n\u0131n sadece belirli veritabanlar\u0131na veya sadece <code>SELECT<\/code>, <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code> gibi temel i\u015flemlere sahip olmas\u0131, olas\u0131 bir ihlal durumunda zarar\u0131 s\u0131n\u0131rlar.<\/p>\n<p>MariaDB komut istemcisine root olarak giri\u015f yap\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo mysql -u root -p<\/code><\/pre>\n<p>Root \u015fifrenizi girin.<\/p>\n<p>\u00d6ncelikle mevcut t\u00fcm ayr\u0131cal\u0131klar\u0131 geri \u00e7ekin (e\u011fer \u00f6nceden verdiysek):<\/p>\n<pre><code class=\"language-sql\">REVOKE ALL PRIVILEGES ON <em>.<\/em> FROM 'phpmyadminuser'@'localhost';\nFLUSH PRIVILEGES;<\/code><\/pre>\n<p>Ard\u0131ndan, <code>your_database_name<\/code> adl\u0131 belirli bir veritaban\u0131 \u00fczerinde yaln\u0131zca temel CRUD (Olu\u015fturma, Okuma, G\u00fcncelleme, Silme) ayr\u0131cal\u0131klar\u0131 verin:<\/p>\n<pre><code class=\"language-sql\">GRANT SELECT, INSERT, UPDATE, DELETE ON your_database_name.* TO 'phpmyadminuser'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;<\/code><\/pre>\n<p><code>your_database_name<\/code> yerine y\u00f6netmek istedi\u011finiz veritaban\u0131n\u0131n ad\u0131n\u0131 yaz\u0131n. E\u011fer birden fazla veritaban\u0131 y\u00f6netmek istiyorsan\u0131z, her biri i\u00e7in ayr\u0131 ayr\u0131 <code>GRANT<\/code> komutunu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir.<\/p>\n<p>Bu, <code>phpmyadminuser<\/code>&#8216;\u0131n sadece belirtilen veritaban\u0131 \u00fczerinde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar ve di\u011fer veritabanlar\u0131na veya sistem d\u00fczeyindeki i\u015flemlere eri\u015fimini engeller.<\/p>\n<h3>Ad\u0131m 6: phpMyAdmin Eri\u015fimi ve Test Etme<\/h3>\n<p>T\u00fcm kurulum ve g\u00fcvenlik ad\u0131mlar\u0131n\u0131 tamamlad\u0131ktan sonra, phpMyAdmin&#8217;e web taray\u0131c\u0131n\u0131zdan eri\u015ferek her \u015feyin d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 test etme zaman\u0131.<\/p>\n<p>Web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve daha \u00f6nce belirledi\u011finiz gizli yolu kullanarak phpMyAdmin adresine gidin:<\/p>\n<pre><code class=\"language-\">https:\/\/your_domain.com\/myadminsecretpath<\/code><\/pre>\n<p>(E\u011fer SSL kurduysan\u0131z <code>https<\/code> kullan\u0131n, aksi takdirde <code>http<\/code>).<\/p>\n<p>1.  <strong>Nginx Basic Authentication<\/strong>: E\u011fer Basic Authentication&#8217;\u0131 etkinle\u015ftirdiyseniz, taray\u0131c\u0131n\u0131z \u00f6nce bir kullan\u0131c\u0131 ad\u0131 ve \u015fifre penceresi a\u00e7acakt\u0131r. Burada <code>your_nginx_user<\/code> ve <code>htpasswd<\/code> ile belirledi\u011finiz \u015fifreyi girin.<br \/>\n2.  <strong>phpMyAdmin Giri\u015f Ekran\u0131<\/strong>: Ba\u015far\u0131l\u0131 bir kimlik do\u011frulamas\u0131ndan sonra phpMyAdmin&#8217;in ana giri\u015f ekran\u0131n\u0131 g\u00f6receksiniz. Burada MariaDB&#8217;de olu\u015fturdu\u011funuz <code>phpmyadminuser<\/code> kullan\u0131c\u0131 ad\u0131 ve <code>YOUR_STRONG_PASSWORD<\/code> \u015fifrenizi girin.<\/p>\n<p>Giri\u015f yapt\u0131ktan sonra, phpMyAdmin kontrol panelini g\u00f6rmelisiniz. Sol tarafta veritabanlar\u0131n\u0131z listelenmelidir. Olu\u015fturdu\u011funuz <code>phpmyadminuser<\/code> kullan\u0131c\u0131s\u0131n\u0131n sadece izin verdi\u011finiz veritabanlar\u0131n\u0131 g\u00f6rebildi\u011finden emin olun.<\/p>\n<p>*   Veritabanlar\u0131n\u0131 ve tablolar\u0131 g\u00f6r\u00fcnt\u00fclemeyi deneyin.<br \/>\n*   Basit bir SQL sorgusu \u00e7al\u0131\u015ft\u0131rmay\u0131 deneyin (\u00f6rne\u011fin, bir tablo olu\u015fturma veya veri ekleme).<br \/>\n*   \u00c7\u0131k\u0131\u015f yap\u0131n ve tekrar giri\u015f yaparak oturum y\u00f6netiminin do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol edin.<br \/>\n*   URL&#8217;yi yanl\u0131\u015f yazarak veya gizli yolu atlayarak phpMyAdmin&#8217;e eri\u015fmeye \u00e7al\u0131\u015f\u0131n. Nginx Basic Authentication veya IP k\u0131s\u0131tlamalar\u0131n\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<\/p>\n<p>T\u00fcm bu testler ba\u015far\u0131l\u0131 olursa, phpMyAdmin kurulumunuz Nginx \u00fczerinde g\u00fcvenli bir \u015fekilde \u00e7al\u0131\u015f\u0131yor demektir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 k\u0131lavuzda, phpMyAdmin&#8217;i Ubuntu 20.04 sunucusuna Nginx web sunucusu ile nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve g\u00fcvenli\u011fini nas\u0131l sa\u011flayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. Nginx&#8217;in verimlili\u011fi ve phpMyAdmin&#8217;in kullan\u0131m kolayl\u0131\u011f\u0131 birle\u015fti\u011finde, veritaban\u0131 y\u00f6netim s\u00fcre\u00e7leriniz i\u00e7in g\u00fc\u00e7l\u00fc ve h\u0131zl\u0131 bir platform elde etmi\u015f oldunuz.<\/p>\n<p>Kurulum s\u00fcrecinde Nginx ve PHP-FPM&#8217;i yap\u0131land\u0131rmak, MariaDB sunucusunu kurmak ve g\u00fcvenli\u011fini sa\u011flamak, phpMyAdmin&#8217;i y\u00fcklemek ve son olarak Nginx ile entegre etmek gibi temel ad\u0131mlar\u0131 tamamlad\u0131k. En \u00f6nemlisi, phpMyAdmin gibi hassas bir arac\u0131 k\u00f6t\u00fc niyetli sald\u0131r\u0131lardan korumak i\u00e7in giri\u015f yolunu gizleme, HTTP Basic Authentication ekleme, SSL\/TLS \u015fifrelemesi kullanma, IP adresi k\u0131s\u0131tlamas\u0131 uygulama ve phpMyAdmin&#8217;in kendi yap\u0131land\u0131rma dosyas\u0131n\u0131 g\u00fc\u00e7lendirme gibi kritik g\u00fcvenlik \u00f6nlemlerini detayl\u0131ca ele ald\u0131k. Ayr\u0131ca, veritaban\u0131 kullan\u0131c\u0131 ayr\u0131cal\u0131klar\u0131n\u0131 k\u0131s\u0131tlaman\u0131n \u00f6nemini vurgulad\u0131k.<\/p>\n<p>Unutmay\u0131n ki g\u00fcvenlik s\u00fcrekli bir s\u00fcre\u00e7tir. Sunucunuzu ve yaz\u0131l\u0131mlar\u0131n\u0131z\u0131 (Nginx, PHP, MariaDB, phpMyAdmin) d\u00fczenli olarak g\u00fcncel tutmak, g\u00fcvenlik yamalar\u0131n\u0131 uygulamak ve sistem g\u00fcnl\u00fcklerini izlemek, uzun vadede sisteminizin g\u00fcvenli\u011fini sa\u011flamak i\u00e7in hayati \u00f6neme sahiptir. G\u00fc\u00e7l\u00fc \u015fifreler kullanmaya ve eri\u015fimi m\u00fcmk\u00fcn oldu\u011funca k\u0131s\u0131tl\u0131 tutmaya her zaman \u00f6zen g\u00f6sterin. Bu k\u0131lavuzdaki ad\u0131mlar\u0131 uygulayarak, veritaban\u0131 y\u00f6netiminiz i\u00e7in sa\u011flam ve g\u00fcvenli bir temel olu\u015fturmu\u015f oldunuz.<br \/>\n<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"phpMyAdmin&#8217;i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama\nGiri\u015f\nphpMyAdmin, MySQL ve MariaDB veritabanlar\u0131n\u0131 web tabanl\u0131 bi","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-39349","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>phpMyAdmin&#039;i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"phpMyAdmin&#039;i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama\" \/>\n<meta property=\"og:description\" content=\"phpMyAdmin&#039;i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama Giri\u015f phpMyAdmin, MySQL ve MariaDB veritabanlar\u0131n\u0131 web tabanl\u0131 bi\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-19T09:40:49+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"phpMyAdmin&#8217;i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama\",\"datePublished\":\"2026-02-19T09:40:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/\"},\"wordCount\":2714,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/\",\"name\":\"phpMyAdmin'i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-19T09:40:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"phpMyAdmin&#8217;i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"phpMyAdmin'i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/","og_locale":"tr_TR","og_type":"article","og_title":"phpMyAdmin'i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama","og_description":"phpMyAdmin'i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama Giri\u015f phpMyAdmin, MySQL ve MariaDB veritabanlar\u0131n\u0131 web tabanl\u0131 bi","og_url":"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-19T09:40:49+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"phpMyAdmin&#8217;i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama","datePublished":"2026-02-19T09:40:49+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/"},"wordCount":2714,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/","url":"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/","name":"phpMyAdmin'i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-19T09:40:49+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/phpmyadmini-nginx-ile-ubuntu-20-04-sunucusuna-kurma-ve-guvenligini-saglama\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"phpMyAdmin&#8217;i Nginx ile Ubuntu 20.04 Sunucusuna Kurma ve G\u00fcvenli\u011fini Sa\u011flama"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=39349"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39349\/revisions"}],"predecessor-version":[{"id":39350,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39349\/revisions\/39350"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}