Могу ли я вывести базу данных с помощью mysql (не mysqldump)?

0

У меня есть сервер, на котором у меня есть доступ к mysql, но не mysqlimport или mysqldump. Он просто говорит "команда не найдена", и whereis ничего не сообщает. Я попытался сбросить базу данных с помощью PhpMyAdmin, но дамп не может быть успешно импортирован на другой сервер. Я полагаю, phpMyAdmin не может его правильно экспортировать (база данных имеет представления, процедуры, триггеры и such- довольно сложные).

У меня нет доступа к БД из-за "localhost", и я не могу ничего установить на сервере.

Есть ли способ экспортировать БД только с помощью команды mysql? Или каким-то другим способом экспортировать его должным образом?

  • 1
    установить mysqldump
  • 0
    Я не могу ничего там установить.
Показать ещё 7 комментариев
Теги:
export
mysqldump

2 ответа

1
Лучший ответ

В моей системе Debian (LMDE) mysqldump устанавливается с помощью mysql-client-version pkg.

В моей системе RH 5.x она устанавливается в mysql pkg.

mysqldump живет в /usr/bin на обоих. Это должно быть на вашем пути. Я думаю, что у вас нет клиента.

Что нужно попробовать:

  • Поговорите с тем, у кого есть корень и установите его. Ваша система нарушена.
  • rpms может быть установлен в вашем домашнем каталоге. См. Раздел Как извлечь пакет RPM без его установки (команда rpm extract)
  • Вы также можете построить из источника. Это то, что я сделал бы. Просто используйте его из своего домашнего каталога. Вам нужно будет изменить свой путь.
  • MySqlBackupFTP (http://mysqlbackupftp.com). Не знаю, работает ли это, и я уверен, что он не получит все.

Это должно быть невозможно. Надеюсь, у вас есть root-доступ, но им просто не разрешено устанавливать что-либо.

1

Используйте эту функцию и передайте подходящее место для хранения файла

function backup_tables($host,$user,$pass,$name,$tables = '*')
{

    $link = mysql_connect($host,$user,$pass);
    $return = "";
    mysql_select_db($name,$link);

    //get all of the tables
    if($tables == '*')
    {
        $tables = array();
        $result = mysql_query('SHOW TABLES');
        while($row = mysql_fetch_row($result))
        {
            $tables[] = $row[0];
        }
    }
    else
    {
        $tables = is_array($tables) ? $tables : explode(',',$tables);
    }

    //cycle through
    foreach($tables as $table)
    {
        $result = mysql_query('SELECT * FROM '.$table);
        $num_fields = mysql_num_fields($result);

        $return.= 'DROP TABLE '.$table.';';
        $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
        $return.= "\n\n".$row2[1].";\n\n";

        for ($i = 0; $i < $num_fields; $i++) 
        {
            while($row = mysql_fetch_row($result))
            {
                $return.= 'INSERT INTO '.$table.' VALUES(';
                for($j=0; $j<$num_fields; $j++) 
                {
                    $row[$j] = addslashes($row[$j]);

                    if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
                    if ($j<($num_fields-1)) { $return.= ','; }
                }
                $return.= ");\n";
            }
        }
        $return.="\n\n\n";
    }

    //save file to desired location

    $handle = fopen(date('d_M_Y_H_m_s').'.sql','w+');

    fwrite($handle,$return);
    fclose($handle);


    if($return == true)
    {
        $_GET['msg']= 'Backup is successfull.'; 
    }
    else
    {
        $_GET['msg']= 'Backup is Not successfull.'; 
    }   



}
  • 0
    Спасибо, но мне нужно все - триггеры, процедуры, представления. Скорее всего, таблицы должны быть заблокированы в первую очередь (из-за триггеров). Это не так просто.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню