【问题标题】:How can I automate the exportation of a mySQL database using phpMyAdmin如何使用 phpMyAdmin 自动导出 mySQL 数据库
【发布时间】: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 并设置自动备份数据库的时间表。

标签: automation phpmyadmin export


【解决方案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 调度工具。
    猜你喜欢
    • 2011-01-20
    • 2016-08-27
    • 2015-06-01
    • 2014-05-27
    • 2023-03-26
    • 2011-05-28
    • 2011-12-08
    • 2015-09-28
    相关资源
    最近更新 更多