mysql触发器 触发脚本_mysql触发器内执行shell脚本,shell脚本用curl访问php网页-程序员宅基地

技术标签: mysql触发器 触发脚本  

如果不想自己编译的话,把lib_mysqludf_sys.so文件放到 mysql的lib/mysql/plugin/

目录下。

执行chcon -t texrel_shlib_t usr/lib/mysql/plugin/lib_mysqludf_sys.so

在mysql中执行如下sql创建函数

DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;

DROP FUNCTION IF EXISTS sys_get;

DROP FUNCTION IF EXISTS sys_set;

DROP FUNCTION IF EXISTS sys_exec;

DROP FUNCTION IF EXISTS sys_eval;

CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME "lib_mysqludf_sys.so";

CREATE FUNCTION sys_get RETURNS string SONAME "lib_mysqludf_sys.so";

CREATE FUNCTION sys_set RETURNS int SONAME "lib_mysqludf_sys.so";

CREATE FUNCTION sys_exec RETURNS int SONAME "lib_mysqludf_sys.so";

CREATE FUNCTION sys_eval RETURNS string SONAME "lib_mysqludf_sys.so";

四、测试

1、准备sh文件

在linux系统中执行下面的命令

su mysql

mkdir /mysqlUDFtest

cd mysqlUDFtest

vi test.sh

#/bin/sh

date > testlog.txt

curl http://192.168.1.158/api/goods.php

chmod +x ./test.sh

2、准备数据库表和触发器

选择一个数据库执行如下命令:

CREATE TABLE test1(a1 INT) engine=InnoDB;

CREATE TABLE test2(a2 INT) engine=InnoDB;

DELIMITER |

DROP TRIGGER /*!50032 IF EXISTS */ `test`.`testref`|

create trigger curlgoods BEFORE INSERT on goods

for each row BEGIN

DECLARE done INT DEFAULT 999;

set done = sys_exec("/usr/lib64/mysql/curlphp/curlgoods.sh");

END;

|

DELIMITER ;

3、向test1表中插入一条数据后,请在Linux命令行:用root用户,执行以下命令:find / -name testlog.txt

查找testlog.txt文件。

执行/data/mysql/要执行的shell文件!------------重点(gentos6.6只能在这个路径里面执行)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35244067/article/details/113216399

智能推荐

LINUX编译json-c错误的解决:autoreconf找不到,json_tokener.c报错_right-hand operand of comma expression has no effe-程序员宅基地

文章浏览阅读2.6k次。柳鲲鹏http://www.json.org/ 直接安装sudo apt-get install libjson0-dev libjson0下载源码编译安装https://github.com/jehiah/json-c执行命令# 依赖库, 否则可能提示autoreconf找不到sudo apt-get install autoconf automake libtool..._right-hand operand of comma expression has no effect

文本溢出 使用...替代_裁剪掉溢出的文字, 用...代替-程序员宅基地

文章浏览阅读110次。单行文本 //一定写宽度 width:100px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap_裁剪掉溢出的文字, 用...代替

【数据结构】(一)数据结构入门-程序员宅基地

文章浏览阅读1.2w次,点赞19次,收藏93次。文章目录数据结构入门1 数据结构基础知识2 算法复杂度数据结构入门数据结构+算法=程序数据结构+算法=程序数据结构+算法=程序1 数据结构基础知识数据指所有能输入到计算机中的描述客观事物的符号,包括文本、声音、图像、符号等。数据元素数据元素是数据的基本单位,也称节点或记录,如下图所示。数据项数据项表示有独立含义的数据最小单位,也称域。若干个数据项构成一个数据元素,数据项是不可分割的最小单位,如上图所示的“86”。数据对象数据对象是指相同特性的数据元素的集合,是数据的一个子集。数据结_数据结构

华为鸿蒙开始陆续推送事件,万众期待!华为鸿蒙开始陆续推送,谁说只是安卓换皮?...-程序员宅基地

文章浏览阅读99次。关于华为鸿蒙系统的消息在一个月前小编就已经和大家打过招呼了。自华为官宣鸿蒙替代安卓以来,质疑声、催促声,可谓是此起彼伏。早前放出消息称,华为鸿蒙将在4月份开始推送。于是很多用户在3月份就开始眼巴巴等着。这不,虽说是姗姗来迟,但华为终是没有辜负大家。朋友们,华为已经开始陆续推送鸿蒙系统了!据悉,华为鸿蒙系统HarmonyOs已经在华为多款手机上进行推送,机型包括MateX2、Mate40系列、Mat..._华为手机开始推送鸿蒙合法吗

英语面试对话场景[进入外企的敲门砖]_别人问你 beginning position-程序员宅基地

文章浏览阅读1.1w次。 I:Interviewer(面试者) A:Applicant(求职者) 教育背景:简明扼要,实话实说尽管你在简历中对自己的教育背景作了介绍,但在面试时,面试官还有可能就此方面提问。还是事先做点准备吧。 ①I:what is your major? A:My major is Business Administration. I am especially interested i_别人问你 beginning position

Python 脚本封装成 .exe 文件_python selenium封装成体积最小的exe-程序员宅基地

文章浏览阅读6.4k次,点赞3次,收藏15次。最近写了一个小小的程序,需要进行封装exe,为了简单,就直接用了pyinstaller这个模块,对于python3.6版本的童鞋来说,简直方便的不要。下面就给大家介绍一下如何用pyinstaller去封装程序为exe程序。首先,需要安装一下pip这个应用,这个已经在前面的文章中说过了,windows和linux都有请借鉴windows和linux。第二步,安装好pip之后,在cmd命令窗口..._python selenium封装成体积最小的exe

随便推点

numpy计算一个点到其余点的欧氏距离_numpy求一个点到一群点的距离-程序员宅基地

文章浏览阅读2.6k次,点赞4次,收藏10次。distances = np.sqrt(np.sum(np.asarray(xyzmean - points) ** 2, axis=1))xyzmean是单独一个点,points是点的集合生成的distances是一个距离的一维数组_numpy求一个点到一群点的距离

集合为NULL与集合长度为零的区别_集合不为空和集合长度大于零是一样的嘛-程序员宅基地

文章浏览阅读5.2k次,点赞8次,收藏6次。在工作中经常会见到类似这样的if条件: List emps = new ArrayList(); if(emps!=null && emps.size()!=0){ //此处代码省略… } 经测试,二者的确是不同的.如下代码: (1)声明一个集合,但不赋值:public class T3 { public static void main(String[] args) {_集合不为空和集合长度大于零是一样的嘛

鸿蒙系统目前所应用到哪些领域,比安卓快60% 华为鸿蒙新操作系统会有哪些应用领域?...-程序员宅基地

文章浏览阅读1.1k次。华为鸿蒙系统被曝光以后,业界便传来大量猜测的声音——鸿蒙系统首先会被用在什么设备上?此前,我们更多的猜测为手机。甚至还有消息称,鸿蒙OS已经基于华为Mate 30做了小规模内测,而且还有有测试者爆料了测试系统的一些细节。不过,7月25日,华为心声社区发布了任正非7月18日接受意大利媒体采访的纪要。谈及鸿蒙操作系统,任正非表示,鸿蒙首先使用在手表、智能8K大屏和车联网上,安卓系统上,还是等待谷歌获得..._鸿蒙主要在那些场合使用

Struts2输入校验之validate输入校验方式_struts2 validate()-程序员宅基地

文章浏览阅读2.5k次。一.在Web系统项目中有大量的视图页面需要用户自行输入很多数据。这些数据的类型有很多种。为了防止某些客户的恶意输入以及对Web项目的恶意破坏,必须引入输入校验,像Windows操作系统的防火墙一样把一些垃圾数据过滤掉,挡在Web系统之外。接下来就来介绍一下validate输入校验方式:1.validate方法进行输入校验:这里直接附上一个简单的用户注册功能具体介绍利用validate方法对数字_struts2 validate()

JAVA for循环画图(包括圆形,心形)_for循环画圆-程序员宅基地

文章浏览阅读2.2k次。最近从JAVA转战C++基础东西也不敢直接不学,在听了老师的分支语句和循环语句以后想起来了以前自己上C语言课用这些东西画图形,一时感慨万千,做此笔记。实心矩形x,y分别为长和宽 public static void drawRect1(int x,int y) { for(int i=0;i<y;i++) { for(int j=0;j<x;j++) { System.out.print("*"); } System.out.println(); } }_for循环画圆

android.intent.action.DOWNLOAD_COMPLETE下载广播-程序员宅基地

文章浏览阅读4.2k次。可以参考一下android DownloadManager广播事件:下载完成、通知栏点击事件当监听了这个广播, android.intent.action.DOWNLOAD_COMPLETE,但是根本没有没有接收到这个广播。群里就有人发现 华为6.0不行 乐视可以接收到 。_android.intent.action.download_complete