Php 使用cron作业删除数据库

Php 使用cron作业删除数据库,php,mysql,cron,sql-delete,Php,Mysql,Cron,Sql Delete,我需要知道如何使用cron作业每6小时删除或删除一个数据库,并让他们使用demo.sql创建数据库。 在我的cpanel中,我创建了如下cron: 0 0 1 * * /home/escyv/restore_data.sh 并且cron执行该命令,但是当cron作业执行该命令时,不进行任何删除或截断 下面是脚本: restore_data.sh #! /bin/sh clear; #fill in your database information here user="e

我需要知道如何使用cron作业每6小时删除或删除一个数据库,并让他们使用demo.sql创建数据库。 在我的cpanel中,我创建了如下cron:

0   0   1   *   *   /home/escyv/restore_data.sh
并且cron执行该命令,但是当cron作业执行该命令时,不进行任何删除或截断

下面是脚本:

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!";
#! /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!";
#/垃圾箱/垃圾箱
清楚的
#在这里填写您的数据库信息
user=“escyv_cyv”;
password=“ky21m1”;
server=“localhost”;
数据库_name=“escyv_cyv”;
#备份数据库文件的路径
restore_file=“0db0/escyv_db.sql”;
#在这里,脚本将删除数据库中的所有表
mysql--user=$user--password=$password-h$server-BNe“SHOW TABLES”$database_name | tr'\n','| sed-e's/,$/'| awk'{print“SET FOREIGN_KEY_CHECKS=0;如果存在,则删除表“$1”;SET
外键检查=1;“}”| mysql--user=$user--password=$password-h$server$database\u name;
echo“limpiandose基地!”;
echo“Datos基地餐厅…”;
#在这里,脚本恢复数据库
mysql--user=$user--password=$password host=$server$database\u name<$restore\u file;
echo“datos餐厅基地!”;
我对它进行了测试,将恢复文件escyv_db.sql的名称更改为escyv_db1.sql,以查看站点是否显示错误,但显示数据库中的全部信息…因此我认为该命令并非无效

对不起,我的英语不好…不是我的母语

致以最良好的祝愿

安德烈斯

----编辑----- 这个脚本正在运行感谢@itsols

这是新的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!";
#! /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!";
#/垃圾箱/垃圾箱
清楚的
#在这里,脚本将删除数据库中的所有表
mysql-u escyv-pky21m1-e'drop database escyv_cyv;'
echo“limpiandose基地!”;
mysql-u escyv-pky21m1-e“创建数据库escyv_cyv;”
#在这里,脚本恢复数据库
mysql-u escyv_cyv-pky21m1 escyv_cyv<0db0/escyv_db.sql
echo“Datos基地餐厅…”;
echo“datos餐厅基地!”;

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

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


我建议使用一种方法,创建/删除由用户标识的表。通过这种方式,您可以限制对单个表的访问,并仅备份那些特定的表。例如,如果您有一个名为X的用户,那么您的表可以称为tblXSomeTable。字母tbl后面的用户名有助于识别数据库的所有权。

这是您自己的本地服务器还是托管服务器。如果是第三方托管的服务器,通常情况下,除非您具有正确的权限,否则无法执行DB删除。创建数据库也是如此。这主要是出于安全原因。但是我不确定这是否是你的情况。hello@itsols位于gator的托管文件夹中,我有特权,因为我可以压缩整个文件夹并备份数据库。DROP DATABASE是单独的特权。嗯。。我会要求支持,如果我有特权…gator中的支持告诉我,如果我有用户和数据库通行证,我可以删除数据库gator中的支持团队告诉我,我有特权,如果我知道数据库的用户名和密码,我可以删除或创建cron job等。这里的答案是“如果您有数据库的mysql用户名和密码,您应该能够使用cron作业删除数据库。”检查这一点的一个好方法是通过shell脚本尝试创建或删除db命令,并直接运行它(而不是作为cron运行),然后您可以确保它是否有效。或者,您可以尝试运行一个php程序,其中drop db是使用system/exec完成的。要直接测试脚本,您需要终端访问权限。您好,您能告诉我如何使用drop database生成此shell脚本吗?这里有一个答案:但我怀疑这是否适用于您的live主机,因为您无法获得该级别的权限。在任何情况下,请仔细检查您的主机。它可以删除我的整个数据库,这里的命令是mysql-u escyv-pky21m1-e'drop database escyv_cyv;'我使用以下命令创建数据库
mysql-u escyv-pky21m1-e'create database escyv_cyv;'但当我尝试将数据插入数据库时,会出现以下错误:/home/escyv/restore_data.sh:第13行:/0db0/escyv_db.sql:没有这样的文件或目录,但该路径中实际上是包含sql中所有数据的文件。。。。