我想将我的数据库转储到文件中。
某些网站托管服务商不允许远程访问或命令行访问,因此我必须使用一系列查询来执行此操作。
所有相关问题都说“使用mysqldump
”这是一个很棒的工具,但是我没有命令行访问这个数据库。
我希望同时创建CREATE
和INSERT
命令 - 基本上与mysqldump
的性能相同。 SELECT INTO OUTFILE
是正确的旅行之路,还是有其他我忽视的东西 - 或许这是不可能的?
答案 0 :(得分:21)
使用mysqldump-php
一个纯PHP解决方案来复制mysqldump
可执行文件的功能,以用于基本的med复杂用例 - 我知道你可能没有远程CLI和/或mysql直接访问,但是只要您可以通过主机上的httpd上的HTTP请求执行,这将起作用:
因此,您应该可以直接从/ www /中的安全目录运行以下纯PHP脚本,并在其中写入输出文件并使用wget抓取它。
mysqldump-php - Pure PHP mysqldump on GitHub
PHP示例:
<?php
require('database_connection.php');
require('mysql-dump.php')
$dumpSettings = array(
'include-tables' => array('table1', 'table2'),
'exclude-tables' => array('table3', 'table4'),
'compress' => CompressMethod::GZIP, /* CompressMethod::[GZIP, BZIP2, NONE] */
'no-data' => false,
'add-drop-table' => false,
'single-transaction' => true,
'lock-tables' => false,
'add-locks' => true,
'extended-insert' => true
);
$dump = new MySQLDump('database','database_user','database_pass','localhost', $dumpSettings);
$dump->start('forum_dump.sql.gz');
?>
答案 1 :(得分:1)
你的双手被你的主人束缚,你可能不得不采取一种相当极端的方法。使用主机提供的任何脚本选项,您可以通过一点点困难实现这一目标。您可以创建仅为您所知的安全网页或海峡文本转储链接,并且具有足够的安全性以防止所有未经授权的访问。可以编写用于构建页面/文本内容的脚本,以遵循以下步骤:
对于要备份的每个数据库:
第1步:运行SHOW TABLES
。
步骤2:对于上述查询返回的每个表名,运行SHOW CREATE TABLE
以获取可在另一台服务器上运行的create语句,以重新创建表并将结果输出到网页。您可能必须在“DROP TABLE X IF EXISTS”之前添加;在每个由这些查询的结果生成的create语句之前(!不在您的查询输入中!)。
步骤3:对于从步骤1返回的每个表名,再次运行SELECT *
查询并捕获完整结果。在输出到屏幕之前,您需要对此查询结果应用批量转换,以将每行转换为INSERT INTO tblX
语句,并将最终转换结果输出到网页/文本文件下载。
最终的网页/文本下载将包含所有create语句的输出,其中包含“drop table if exists”安全措施和insert语句。将输出保存为您自己的计算机作为“.sql”文件,并根据需要在任何备份主机上执行。
对不起,你必须经历这个。请注意,保留所需的mysql用户帐户完全不同。
答案 2 :(得分:1)
在Web服务器上使用/安装PhpMySQLAdmin,然后单击“导出”。许多Web主机已经为您提供了预先配置的服务,如果您还没有它,它很容易安装(纯php):http://www.phpmyadmin.net/
这允许您导出数据库,以及非常快速和轻松地执行其他繁琐的数据库操作 - 它适用于旧版本的PHP&lt; 5.3(不同于Mysqldump.php提供的另一个答案)。
我知道问题是“使用查询”,但我相信这里的重点是,当shell访问不可用时,会寻求任何必要的手段 - 这就是我登陆这个页面的方式,PhpMyAdmin救了我! / p>