我需要知道如何使用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!";
答案 0 :(得分:0)
使用数据库需要某些权限。因此,例如,您可以读取数据库,处理其中的记录以及创建备份(通常是文本文件)。
但是,主要由于安全原因,您无权使用主机提供的权限创建数据库或删除数据库。因此,鳄鱼不太可能给你这种特权。
我建议您创建/删除用户标识的表格。这样,您可以限制对各个表的访问,并仅备份那些特定的表。例如,如果您有一个名为X的用户,则可以将您的表称为tblXSomeTable。字母tbl后面的用户名有助于识别数据库的所有权。