使用cron作业删除数据库

时间:2013-08-02 16:26:28

标签: php mysql cron sql-delete

我需要知道如何使用cron作业每6小时删除或删除一个数据库,然后使用demo .sql创建它。 在我的cpanel中,我创建了这样的cron:

0   0   1   *   *   /home/escyv/restore_data.sh

并且cron执行命令但是当cron作业执行命令时没有做任何drop o truncate。

这里是剧本:

restore_data.sh

#! /bin/sh
clear;
#fill in your database information here
user="escyv_cyv";
password="ky21m1";
server="localhost";
database_name="escyv_cyv";

#path to the backup database file
restore_file="0db0/escyv_db.sql";

#here the script deletes all your tables in the database
mysql --user=$user --password=$password -h $server -BNe "SHOW TABLES" $database_name | tr '\n' ',' | sed -e 's/,$//' | awk '{print "SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS " $1 ";SET
FOREIGN_KEY_CHECKS = 1;"}' | mysql --user=$user --password=$password -h $server $database_name;

echo "Base de datos limpiandose!";
echo "Restaurando Base de Datos..";

#here the script restores the database
mysql --user=$user --password=$password host=$server $database_name < $restore_file;

echo "Base de datos restaurada!";

我测试它将恢复文件escyv_db.sql的名称更改为escyv_db1.sql以查看该网站是否显示错误但是向我显示数据库中的整个信息...所以我认为该命令没有任何结果。

抱歉我的英语不好......不是我的母语

最诚挚的问候!

安德烈斯

----- ----- EDIT 这个脚本正常运行! 感谢@itsols

这是新的restore_data.sh

#! /bin/sh
clear;

#here the script deletes all your tables in the database
mysql -u escyv -pky21m1 -e 'drop database escyv_cyv;'

echo "Base de datos limpiandose!";

mysql -u escyv -pky21m1 -e 'create database escyv_cyv;'

#here the script restores the database

mysql -u escyv_cyv -pky21m1 escyv_cyv < 0db0/escyv_db.sql

echo "Restaurando Base de Datos..";

echo "Base de datos restaurada!";

1 个答案:

答案 0 :(得分:0)

使用数据库需要某些权限。因此,例如,您可以读取数据库,处理其中的记录以及创建备份(通常是文本文件)。

但是,主要由于安全原因,您无权使用主机提供的权限创建数据库或删除数据库。因此,鳄鱼不太可能给你这种特权。

我建议您创建/删除用户标识的表格。这样,您可以限制对各个表的访问,并仅备份那些特定的表。例如,如果您有一个名为X的用户,则可以将您的表称为tblXSomeTable。字母tbl后面的用户名有助于识别数据库的所有权。