Shell ile sunucuya sızıp ROOT olamadığınız durumlarda hayat kurtaran bir çözüm.
İlgili kodu .php formatı ile Sunucuya yükleyip çalıştırınız.
SQL Yedekledikten sonra indir butonu gözükecektir.
İlgili kodu .php formatı ile Sunucuya yükleyip çalıştırınız.
SQL Yedekledikten sonra indir butonu gözükecektir.
PHP:
<?php
$host = 'localhost'; // Veritabanı sunucusu (genelde localhost )
$user = 'user'; // Veritabanı kullanıcı adı
$pass = 'pw'; // Veritabanı şifre
$db = 'db'; // Veritabanı adı
// Bağlantı oluştur
$mysqli = new mysqli($host, $user, $pass, $db);
// Bağlantı hatasını kontrol et
if ($mysqli->connect_error) {
die("Bağlantı hatası: " . $mysqli->connect_error);
}
// Veritabanı tablolarını al
$tables = array();
$result = $mysqli->query("SHOW TABLES");
while ($row = $result->fetch_row()) {
$tables[] = $row[0];
}
// SQL dosyası oluştur
$sqlFile = 'backup_' . date('Y-m-d_H-i-s') . '.sql';
$handle = fopen($sqlFile, 'w');
// Tabloları döngüye al ve SQL sorgusu oluştur
foreach ($tables as $table) {
$result = $mysqli->query("SELECT * FROM $table");
$numColumns = $result->field_count;
// Tablo yapısını ve verilerini dosyaya yaz
fwrite($handle, "DROP TABLE IF EXISTS $table;\n");
$createTable = $mysqli->query("SHOW CREATE TABLE $table")->fetch_assoc();
fwrite($handle, $createTable["Create Table"] . ";\n");
while ($row = $result->fetch_row()) {
$sql = "INSERT INTO $table VALUES (";
for ($i = 0; $i < $numColumns; $i++) {
$sql .= "'" . $mysqli->real_escape_string($row[$i]) . "'";
$sql .= ($i < ($numColumns - 1)) ? ',' : '';
}
$sql .= ");\n";
fwrite($handle, $sql);
}
fwrite($handle, "\n");
}
// Dosyayı kapat
fclose($handle);
// Veritabanı bağlantısını kapat
$mysqli->close();
// İndirme bağlantısını göster
echo "TURKHACKS: SQL yedeği başarıyla oluşturuldu. <a href='$sqlFile' download>İndir</a>";
?>








