trkod.tr — Türkçe Kılavuzlar

CyberPanel phpMyAdmin Otomatik Giriş Sorunu ve Kesin Çözümü

Bu sayfayı ekleyen: #Netler

CyberPanel kullanıcılarının en sık karşılaştığı teknik sorunlardan biri, kontrol paneli üzerinden phpMyAdmin'e erişmeye çalışırken yaşanan otomatik giriş (SSO / Single Sign-On) hatasıdır. Panel üzerinden veritabanına girmeye çalıştığınızda şifre ekranında takılıyorsanız veya boş bir sayfa ile karşılaşıyorsanız, doğru yerdesiniz.

Bu rehberde, SSH bağlantısı kullanarak CyberPanel phpMyAdmin otomatik giriş sorununu adım adım nasıl çözeceğinizi anlatıyoruz.


CyberPanel phpMyAdmin Otomatik Giriş Sorunu Nedir?

CyberPanel, kullanıcıların şifre girmeden veritabanlarına tek tıkla erişebilmesi için arka planda bir SSO (Tekli Oturum Açma) mekanizması kullanır. Güncellemeler, eksik dosyalar veya yapılandırma (configuration) hataları nedeniyle bu köprü kopabilir. Sonuç olarak phpMyAdmin'e otomatik geçiş yapılamaz.


Adım Adım phpMyAdmin Otomatik Giriş Sorununun Çözümü

İşleme başlamak için sunucunuza SSH (PuTTY veya Terminal) üzerinden root yetkisiyle bağlanmanız gerekmektedir.

1. phpMyAdmin Dizininin Kontrol Edilmesi ve Kurulumu

Öncelikle CyberPanel'in kamuya açık dizinine giderek phpMyAdmin klasörünün varlığını kontrol edelim.

SSH terminalinizde şu komutu çalıştırın:

Bash
cd /usr/local/CyberCP/public
ls -la

Eğer bu dizinde phpmyadmin adında bir klasör yoksa, gerekli dosyaları indirip arşivden çıkarmanız gerekir. Klasör yoksa aşağıdaki bash komutlarını sırasıyla çalıştırın:

Bash
cd /usr/local/CyberCP/public
wget -v https://github.com/josephgodwinkimani/cyberpanel-mods/raw/main/phpmyadmin.zip
unzip phpmyadmin.zip

2. config.inc.php Yapılandırma Dosyasının Oluşturulması

phpmyadmin klasörü içinde SSO ayarlarını tutacak olan config.inc.php dosyasının doğru yapılandırılması kritik öneme sahiptir.

  1. /usr/local/CyberCP/public/phpmyadmin dizinine gidin.
  2. config.inc.php dosyasını düzenleyin (veya yoksa oluşturun):
Bash
nano /usr/local/CyberCP/public/phpmyadmin/config.inc.php
  1. Dosya içeriğini aşağıdaki kodlar ile değiştirin:

Önemli: $cfg['blowfish_secret'] kısmına güvenlik için kendinize özel, rastgele 32 karakterlik karmaşık bir metin yazın.

PHP
<?php

$cfg['blowfish_secret'] = 'a8b7c6d5e4f3g2h1i0j9k8l7m6n5o4p3'; // Kendinize özel rastgele bir kod yazın


$i = 0;
$i++;

/* Authentication type */
$cfg['Servers'][$i]['auth_type']       = 'signon';
$cfg['Servers'][$i]['SignonSession']   = 'CyberCPSession';
$cfg['Servers'][$i]['SignonURL']       = '/phpmyadmin/phpmyadminsignin.php';
$cfg['Servers'][$i]['host']            = 'localhost';
$cfg['Servers'][$i]['connect_type']    = 'tcp';
$cfg['Servers'][$i]['compress']        = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

$cfg['UploadDir'] = '';
$cfg['SaveDir']   = '';

3. SSO Otomatik Giriş Köprüsü: phpmyadminsignin.php

Giriş yaparken CyberPanel jetonlarını (token) doğrulayacak ve phpMyAdmin oturumunu otomatik başlatacak dosyayı hazırlamamız gerekiyor.

  1. phpmyadmin klasörü içerisinde phpmyadminsignin.php adında bir dosya oluşturun:
Bash
nano /usr/local/CyberCP/public/phpmyadmin/phpmyadminsignin.php
  1. Aşağıdaki PHP kodunu yapıştırın:

Dikkat: Kod içerisindeki $db_password = ""; satırında tırnak işaretlerinin arasına sunucunuzun Root MySQL / MariaDB şifresini yazmayı unutmayın. /usr/local/CyberCP/CyberCP/settings.py bu dosya içinde mysql root şifresi bulunuyor buradan alabilirsiniz. settings.py dosyasını değiştirmeyin.

PHP
<?php

declare (strict_types = 1);

/* Session çerezlerini aktif ediyoruz */
ini_set('session.use_cookies', 'true');
$secure_cookie = false;
session_set_cookie_params(0, '/', '', $secure_cookie, true);
$session_name = 'CyberCPSession';
session_name($session_name);
@session_start();

// CyberPanel SSO Bridge Script

if ($_SERVER['REQUEST_METHOD'] === 'POST' && ! empty($_POST['username']) && ! empty($_POST['token'])) {
    $username = $_POST['username'];
    $token    = $_POST['token'];

    // Buraya root mysql şifrenizi girin!

    $db_password = "MYSQL_ROOT_SIFRENIZI_BURAYA_YAZIN"; 

    // CyberPanel veritabanına bağlanıp token kontrolü yap

    $conn = new mysqli('localhost', 'root', $db_password, 'cyberpanel', null, '/var/run/mysqld/mysqld.sock');

    if ($conn->connect_error) {
        $conn = new mysqli('localhost', 'root', $db_password, 'cyberpanel');
    }

    if (! $conn->connect_error) {
        $stmt = $conn->prepare("SELECT password FROM databases_globaluserdb WHERE username = ? AND token = ?");
        $stmt->bind_param("ss", $username, $token);
        $stmt->execute();
        $result = $stmt->get_result();

        if ($row = $result->fetch_assoc()) {
            $password = $row['password'];

            // Token'ı güvenlik için temizle

            $update = $conn->query("DELETE FROM databases_globaluserdb WHERE username = '" . $username . "'");

            // phpMyAdmin signon oturumunu başlat ve bilgileri aktar

            if ($username == "admin") {
                $_SESSION['PMA_single_signon_user']     = "root";
                $_SESSION['PMA_single_signon_password'] = $db_password;
            } else {
                $escaped_user = $conn->real_escape_string($username);
                $escaped_pass = $conn->real_escape_string($password);

                // MySQL/MariaDB kullanıcısının şifresini güncelle ve yetkileri yenile

                $alter_sql = "ALTER USER '{$escaped_user}'@'localhost' IDENTIFIED BY '{$escaped_pass}'";
                if ($conn->query($alter_sql)) {
                    $conn->query("FLUSH PRIVILEGES");
                } else {
                    die("Giriş yetkisi güncellenemedi.");
                }
                $_SESSION['PMA_single_signon_user']     = $username;
                $_SESSION['PMA_single_signon_password'] = $password;
            }

            // phpMyAdmin ana sayfasına yönlendir

            header('Location: /phpmyadmin/index.php');
            exit();
        }
        $stmt->close();
        $conn->close();
    }
}

// Token eşleşmezse veya doğrudan girilirse işlem sonlandırılır

exit();

Sonuç ve Test

Tüm dosyaları kaydedip kapattıktan sonra, CyberPanel yönetici panelinize geri dönün. Databases > Access phpMyAdmin (Veritabanları > phpMyAdmin'e Erişim) menüsüne tıklayın.

Eğer tüm adımları doğru uyguladıysanız ve MySQL root şifrenizi dosyaya yazdıysanız, phpMyAdmin şifre sormadan otomatik olarak açılacaktır.

Özetle Ne Yaptık?

  1. Eksik phpMyAdmin dosyalarını sunucuya indirdik.
  2. SSO (Single Sign-On) giriş yöntemini destekleyen config.inc.php dosyasını oluşturduk.
  3. CyberPanel token sistemi ile phpMyAdmin oturumunu bağlayan phpmyadminsignin.php köprü yazılımını ekledik.

CyberPanel veya sunucu yönetimi ile ilgili yaşadığınız diğer sorunlar için yorum yapabilir veya destek alabilirsiniz!

Yorumlar (0)

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorum yapmak için giriş yapın veya kayıt olun.