宝塔面板的计划任务的任务类型有Shell脚本、备份网站、备份数据库、日志切割、释放内存、访问URL、备份目录、木马查杀、同步时间,但是没有SQL语句,那么宝塔面板在计划任务中怎么执行SQL语句?
其实,我们可以用shell脚本和MySQL -e参数来执行各种SQL语句,包括创建、删除、增加、修改、查询等,从而达到操作mysql数据库目的。具体格式如下:
#数据库本机地址
HOSTNAME="127.0.0.1"
#数据库端口
PORT="3306"
#数据库用户名
USERNAME="root"
#数据库密码
PASSWORD="123456"
#数据名称
DBNAME="shujuku"
#计划执行的SQL语句
shili_sql="SQL语句"
示例
mysql -h$HOSTNAME -P$PORT -u$USERNAME -p$PASSWORD $DBNAME -e "$shili_sql"
下面boke112百科就以批量删除wp_postmeta数据表无用的_edit_lock和_edit_last数据为例,跟大家说一说在宝塔面板的计划任务中如何定执行SQL语句。
1、登录进入我们服务器上的宝塔面板后台 >> 点击左侧导航菜单“数据库”>> 将数据库名、用户名、密码等信息填写到以下代码中:
USERNAME="用户名"
PASSWORD="密码"
DBNAME="数据库名"
shili_sql="DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock' OR meta_key = '_edit_last'"
mysql -u$USERNAME -p$PASSWORD $DBNAME -e "$shili_sql"
也可以直接使用以下代码:
mysql -u用户名 -p密码 数据库 -e "DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock' OR meta_key = '_edit_last'"
注意:
1)点击“管理”可以直接进入phpMyAdmin,看看表前缀是不是wp_,不是的话请将上述代码中的wp_postmeta修改为正确的数据表;
2)因为是使用宝塔面板的计划任务来执行SQL语句,所以无需填写数据库本机地址和端口。
2、点击左侧导航菜单“计划任务”,任务类型选择“Shell脚本”;任务名称可随意,比如每日1日删除_edit_lock和_edit_last数据;执行周期根据自己站点实际需求填写,比如选择每月1日1点30分执行;在脚本内容填写第1步填写好的代码;最后点击【添加任务】按钮。
3、因为我们添加的是定时任务,目前还没有执行,为了验证是否有效,所以建议在“任务列表”中点击我们刚才创建的计划任务对应的“执行”。
如果执行完毕并在弹出的“任务执行日志”中显示“Successful”,说明这个计划任务没有问题。
任务执行日志中显示的警告可忽略:
Warning: Using a password on the command line interface can be insecure.
警告:在命令行界面上使用密码可能不安全。
稳妥起见,我们在点击左侧导航菜单的“数据库”,点击相应数据库的“管理”进入phpMyAdmin查看wp_postmeta数据表中是否还有_edit_lock和_edit_last数据?如果没有就说明刚才添加的计划任务确实可行。
同样道理,如果你想要通过宝塔面板计划任务执行其他的SQL语句,只需要将第1步中的SQL语句修改即可。
如果你的服务器没有安装宝塔面板,那么也可以使用MySQL的事件来定时执行SQL语句,详见『MySQL如何用phpMyAdmin创建定时任务事件来执行SQL语句删除_edit_lock和_edit_last?』。