如何使用 phpMyAdmin 自动导出 mySQL 数据库

Posted

技术标签:

【中文标题】如何使用 phpMyAdmin 自动导出 mySQL 数据库【英文标题】:How can I automate the exportation of a mySQL database using phpMyAdmin 【发布时间】:2012-04-14 07:36:22 【问题描述】:

是否可以使用 phpMyAdmin 自动导出单个数据库?

当我尝试从外部脚本(如 php)创建 .sql 文件时,生成的 .sql 文件看起来很干净,但导入时会导致应用程序出现问题。

当我使用 phpMyAdmin 通过 Export 创建类似的 .sql 文件时,生成的 .sql 文件会导入而不会对我的应用程序造成任何问题。

应用是moodle 2.2,mysql版本是5.5,phpMyAdmin版本是3.4.10。

【问题讨论】:

我没有在 phpMyAdmin 中检查过,但也许更好的解决方案是让 cron 工作。 我正在使用 cron 调用有问题的外部脚本,这就是为什么我想直接从 phpMyAdmin 创建脚本。 您可以将 MySQLBackupFTP (mysqlbackupftp.com) 连接到您的 phpMyAdmin 并设置自动备份数据库的时间表。 【参考方案1】:

使用这个脚本: https://github.com/qubitstream/phpmyadmin_sql_backup

phpmyadmin_sql_backup.py

通过 Python 3 脚本自动下载 SQL 备份 phpMyAdmin 网页界面。

当您的网络托管服务提供商不授予您许可时,这很有用 访问控制台(用于 mysqldump),但您想自动化 备份您的数据库(无需手动使用浏览器)。

它已经在 Linux 和 Windows 上使用 Python 3.4+ 进行了测试,并且 phpMyAdmin 4.3.6、4.5.4.1 和 4.7.0-dev

注意:phpMyAdmin 的网页界面可能会在未来发生变化,并且 打破这个脚本。请提交错误报告(包括您的版本 phpMyAdmin) 如果您遇到此问题。

例子:

phpmyadmin_sql_backup.py "http://www.example.com/phpmyadmin/" your_user your_password

其他可用选项。

【讨论】:

【参考方案2】:

如果不能用mysqldump直接连接数据库,可以使用这个shell脚本(需要curl):

#!/bin/sh
ADMIN_URL='https://phpmyadmin.example.com'
USERNAME='my_username'
PASSWORD='my_password'
COOKIEJAR='/tmp/my_cookiejar'
token=`curl -s -o - -d "pma_username=$USERNAME" -d "pma_password=$PASSWORD" -c "$COOKIEJAR" "$ADMIN_URL/" | grep -o -m 1 "token=.*'" | sed "s/'//"`
curl -o - -b "$COOKIEJAR" -d what=sql -d export_type=server -d sql_structure_or_data=structure_and_data -d "$token" "$ADMIN_URL/export.php"
rm "$COOKIEJAR"

然后把它放到你的 crontab 中:

22      3   *   *   *   someuser    /path/to/script.sh > /path/to/backup/db.sql

在每晚 3:22 获得备份。

仅使用 phpMyAdmin 3.4.10.1 进行测试,可能不适用于其他(主要)版本。

【讨论】:

看起来 V4 的表单中有标记,所以我认为这不会起作用...虽然没有测试。【参考方案3】:

最好的选择是创建一个使用mysqldump 执行数据库导出的脚本,然后使用一个cronjob 来执行该脚本。

【讨论】:

因为我使用的是 Windows 2003 服务器,所以没有可用的 cron 脚本。自动化。我找到了 cron 的 windows 版本,AT,在那里我可以使用 mysqldump,正如你在命令行中所说的那样。 Windows 中的 Cronjobs 称为计划任务。 这很有效,直到您使用的托管公司的数据库服务器的 IP 是 localhost 或某个 RFC 1918 地址,而您唯一的其他访问权限是 FTP。那么您对我们数据库的唯一访问权限是 phpMyAdmin 或通过自制的 PHP 脚本,因为您无法从 Internet 访问数据库。 通常在这些情况下,托管公司会通过您的面板界面(cPanel、Plesk...)为您提供某种 cron 调度工具。

以上是关于如何使用 phpMyAdmin 自动导出 mySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 phpMyAdmin 从 mySQL 自动导出 CSV

导出mysql中的自动递增列描述

如何使用 phpmyadmin 导出所有数据库

如何使用 phpmyadmin 导出 MySQL 中的特定列?

phpmyadmin 怎么自动备份数据库

使用 PHP/PHPMyAdmin 导出