Sql database dump php

Использование файла .php для создания дампа MySQL

Вот информация, которой я располагаю:

Я работаю с системой на базе Linux, использующей MySQL и PHP5. Мне нужно иметь возможность генерировать mysqldump из файла .php, а затем сохранять этот дамп в файл на сервере в указанном мной месте. Поскольку я не разбираюсь в PHP, я бы хотел, чтобы кто-нибудь помог мне, подсказал или написал код, который сделает то, что мне нужно. Это должно быть запущено и удаленно из и нтернета.

Ответ 1

Вы можете использовать функцию exec() для выполнения внешней команды.

Примечание: между shell_exec() и exec() я бы выбрал вторую, которая не возвращает вывод PHP-скрипту , — нет необходимости, чтобы PHP-скрипт получил весь SQL дамп в виде строки. Вам нужно только записать его в файл, а это может сделать сама команда. Эта внешняя команда будет такой: вызвать mysqldump с нужными параметрам и и перенаправить вывод в файл. Например:

mysqldump —user=. —password=. —host=. DB_NAME > /path/to/output/file.sql

Это означает, что ваш PHP-код будет выглядеть следующим образом:

exec(‘mysqldump —user=. —password=. —host=. DB_NAME > /path/to/output/file.sql’);

Конечно, от вас зависит использование правильной информации о подключении.

Ответ 2

Если вы хотите создать резервную копию, чтобы загрузить ее через браузер, вы также можете сделать это без использования файла. php-функция passthru() будет напрямую перенаправлять вывод mysqldump в браузер. В данном примере он также будет заархивирован.

Плюс: Вам не придется иметь дело с временными файлами.

Минус: Не работает в Windows. Может иметь ограничения при работе с огромными наборами данных.

$DBUSER=»user»;

$DBPASSWD=»password»;

$DATABASE=»user_db»;

$filename = «backup-» . date(«d-m-Y») . «.sql.gz»;

$mime = «application/x-gzip»;

header( «Content-Type: » . $mime );

header( ‘Content-Disposition: attachment; filename=»‘ . $filename . ‘»‘ );

$cmd = «mysqldump -u $DBUSER —password=$DBPASSWD $DATABASE | gzip —best»;

passthru( $cmd );

exit(0);

?>

Ответ 3

Посмотрите здесь: https://github.com/ifsnop/mysqldump-php! Это нативное решение, написанное на php. Вы можете установить его с помощью composer, и это сделать очень просто:

use Ifsnop\Mysqldump as IMysqldump;

try

$dump = new IMysqldump\Mysqldump(‘database’, ‘username’, ‘password’);

$dump->start(‘storage/work/dump.sql’);

> catch (\Exception $e)

echo ‘mysqldump-php error: ‘ . $e->getMessage();

>

?>

Этот код создан для опытных пользователей и поддерживает большое количество опций, скопированных из оригинального mysqldump. Все опции описаны на странице github, но более или менее понятны и так:

$dumpSettingsDefault = array(

‘include-tables’ => array(),

‘exclude-tables’ => array(),

‘compress’ => ‘None’,

‘no-data’ => false,

‘add-drop-database’ => false,

‘add-drop-table’ => false,

‘single-transaction’ => true,

‘lock-tables’ => false,

‘add-locks’ => true,

‘extended-insert’ => true,

‘disable-foreign-keys-check’ => false,

‘where’ => »,

‘no-create-info’ => false

);

Ответ 4

В целях безопасности рекомендуется указывать пароль в конфигурационном файле, а не в команде (пользователь может выполнить команду ps aux | grep mysqldump и увидеть пароль):

// создание временного файла

$file = tempnam(sys_get_temp_dir(), ‘mysqldump’);

// сохранение опций конфигурации

file_put_contents($file, «[mysqldump]

user=

password=\»\»»);

// вы п олнение команды и вывод результата

passthru(«mysqldump —defaults-file=$file «);

// удаление временного файла

unlink($file);

Ответ 5

Здесь вы найдете комплексное решение для дампа структуры и данных mysql, как в PMA (и без использования exec, passthru и т . д .):

https://github.com/antarasi/MySQL-Dump-with-Foreign-keys

Это форк проекта dszymczuk с моими улучшениями. Использование простое:

// параметры соединения MySQL

$dbhost = ‘localhost’;

$dbuser = ‘dbuser’;

$dbpsw = ‘pass’;

$dbname = ‘dbname’;

// соед и нение с сервером mysql

$connessione = @mysql_connect($dbhost,$dbuser,$dbpsw);

// установка кодировки

mysql_query(«SET CHARSET utf8»);

mysql_query(«SET NAMES ‘utf8’ COLLATE ‘utf8_general_ci'»);

// подключение классов

require_once(‘FKMySQLDump.php’);

//Создает новый экземпляр FKMySQLDump: он экспортирует без сжатия и файла base-16

$dumper = new FKMySQLDump($dbname,’fk_dump.sql’,false,false);

$params = array(

//’skip_structure’ => TRUE,

//’skip_data’ => TRUE,

);

// создание дампа

$dumper->doFKDump($params);

?>

Ответ 6

Я нашел этот вариант, который следует подходу из предыдущего ответа и действительно работает.

$dir = «path/to/file/»;

$filename = «backup» . date(«YmdHis») . «.sql.gz»;

$db_host = «host»;

$db_username = «username»;

$db_password = «password»;

$db_database = «database»;

$cmd = «mysqldump -h -u —password= | gzip > «;

exec($cmd);

header(«Content-type: application/octet-stream»);

header(«Content-Disposition: attachment; filename=\»$filename\»»);

passthru(«cat «);

Ответ 7

Ни один из вышеперечисленных кодов не сработал для меня. Я использую W indows. Приведенный ниже код работает.

$sql = «SELECT * FROM $tableName WHERE yourclause»;

$result = $conn->query($sql);

if($result)

if ($result->num_rows > 0)

$myfile = fopen(«daily_events_$district.sql», «w») or die(«Unable to open file!»);

while($row = $result->fetch_assoc())

$rowToString = implode(«‘,'»,$row);

$writeToFile = «INSERT INTO $tableName VALUES(‘$rowToString’);». PHP_EOL;

fwrite($myfile,$writeToFile);

>

echo «Файл сохранен успешно»;

>

> else

echo «Ошибка – результат не определен»;

>

Этот код сохранит файл в папке вашего проекта в соответствии с вашим запросом и любыми данными, которые вы запросите.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

micc83 / mysqldump.php

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

ini_set( ‘display_errors’ , 1 );
ini_set( ‘display_startup_errors’ , 1 );
error_reporting( E_ALL );
$ database = ‘db’ ;
$ user = ‘user’ ;
$ pass = ‘pass’ ;
$ host = ‘localhost’ ;
$ dir = dirname(__FILE__) . ‘/dump.sql’ ;
echo »

Backing up database to ` `

«;

exec(» mysqldump —user= < $ user >—password= < $ pass >—host= < $ host > < $ database >—result-file= < $ dir >2>&1 «, $ output );
var_dump( $ output );

Excellent script. Thanks a lot ..
By the way, if you i want to just dump the tables structures of the DB. How to do that? thanks in advance.

Error occur while running above script please help me to solve this.

array (size=2)
0 => string »mysqldump’ is not recognized as an internal or external command,’ (length=65)
1 => string ‘operable program or batch file.’ (length=31)

You have to add MySQL_Installation_Path/bin to PATH. For example if you are using MariaDB and your installation path is:

Well you have to add C:/MariaDB/bin to system path.

Just use mysqldump-php within your php code. Check out the examples or the wiki, but it is as easy as:

error_reporting(E_ALL); require_once __DIR__ . '/vendor/autoload.php'; include_once(dirname(__FILE__) . '/vendor/mysqldump-php/src/Ifsnop/main.inc.php'); use Ifsnop\Mysqldump as IMysqldump; try < $dump = new IMysqldump\Mysqldump('mysql:host=localhost;dbname=testdb', 'username', 'password'); $dump->start('storage/work/dump.sql'); > catch (\Exception $e) < echo 'mysqldump-php error: ' . $e->getMessage(); >

Just use mysqldump-php within your php code. Check out the examples or the wiki, but it is as easy as:

error_reporting(E_ALL); require_once __DIR__ . '/vendor/autoload.php'; include_once(dirname(__FILE__) . '/vendor/mysqldump-php/src/Ifsnop/main.inc.php'); use Ifsnop\Mysqldump as IMysqldump; try < $dump = new IMysqldump\Mysqldump('mysql:host=localhost;dbname=testdb', 'username', 'password'); $dump->start('storage/work/dump.sql'); > catch (\Exception $e) < echo 'mysqldump-php error: ' . $e->getMessage(); > 

If you’re in windows like me and don’t want create a ENVIRONMENT VARIABLE, you can use the mysql dir before the dump command

Backing up database to ` `"; exec(" --user= --password= --host=  --result-file= 2>&1", $output); var_dump($output); 

The script works well locally, now how can I use it externally?

Thanks a lot for this script.

I improved it with a bit of bash and a desktop launcher, it's written in French but this may interest someone:

first of all let me thank you for the amazing simple script.. it works great, but i needed to add some features to fit my project, such as save file from input form in php, where we select de name of the backup and post it to the execut backup script, and then download file in webrowser directly. attached below is a working example of the code.

And yeahhh keep up the good work lads.

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

include_once("conect-db.php");

$name_backup = $_REQUEST['name_backup'];

$command='mysqldump --opt -h' .$databaseHost .' -u' .$databaseUsername .' -p' .$databasePassword .' ' .$databaseName .' > ' .$name_backup;
exec($command,$output,$worked);

$file_name = basename($name_backup);
//save the file by using base name
$fn = file_put_contents($file_name,file_get_contents($name_backup));
header("Expires: 0");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-type: application/file");
header('Content-length: '.filesize($file_name));
header('Content-disposition: attachment; filename="'.basename($file_name).'"');
readfile($file_name);

switch($worked) case 0:
echo 'The database ' .$databaseName .' was successfully stored in the following path '.getcwd().'./' .$name_backup .'';
break;
case 1:
echo 'An error occurred when exporting ' .$databaseName .' zu '.getcwd().'/' .$mysqlExportPath .'';
break;
case 2:
echo 'An export error has occurred, please check the following information:

MySQL Database Name: ' .$databaseName .'
MySQL User Name: ' .$databaseUsername .'
MySQL Password: NOTSHOWN
MySQL Host Name: ' .$databaseHost .'

';
break;
>
?>

Источник

Sql database dump php

В этом разделе помещены уроки по PHP скриптам, которые Вы сможете использовать на своих ресурсах.

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза "фильтруйте всё, экранируйте всё" всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Совет: активация отображения всех ошибок в PHP

При поднятии PHP проекта на новом рабочем окружении могут возникнуть ошибки отображение которых изначально скрыто базовыми настройками. Это можно исправить, прописав несколько команд.

Источник

Читайте также:  On page load javascript code
Оцените статью