- 浏览: 267141 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
1260533105:
uncaught invalidstateerror:Fail ...
WebSocket -
sh747665463:
压力好大啊
【转】如果你不知道接下去学什么,就看这个
昨天接到一个需求,要求在mysql的触发器中执行一个外部程序。
一开始没有什么头绪,后来发现嘿嘿。
http://forge.mysql.com/projects/project.php?id=211
有个叫mysqludf的一个东西,用起来还不错。
http://www.mysqludf.org/lib_mysqludf_sys/index.php
不过这个东西仅仅在linux下试了试,效果还行。
步骤如下:
一、解压附件的压缩包之后
如果不想自己编译的话,把lib_mysqludf_sys.so文件放到 mysql的lib/mysql/plugin/
目录下。
二、执行chcon -t texrel_shlib_t mysql/lib/mysql/plugin/lib_mysqludf_sys.so
三、创建函数
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
chmod +x ./test.sh
2、准备数据库表和触发器
选择一个数据库执行如下命令:
CREATE TABLE test1(a1 INT) type=InnoDB;
CREATE TABLE test2(a2 INT) type=InnoDB;
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY) type=InnoDB;
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
) type=InnoDB;
DELIMITER |
DROP TRIGGER /*!50032 IF EXISTS */ `test`.`testref`|
create trigger `test`.`testref` BEFORE INSERT on `test`.`test1`
for each row BEGIN
DECLARE done INT DEFAULT 999;
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
set done = sys_exec("/mysqlUDFtest/test.sh");
IF done != 0 then
INSERT INTO `<>22.t3` VALUES (a,b);
end if;
END;
|
DELIMITER ;
3、向test1表中插入一条数据后,检查linux系统中的/mysqlUDFtest目录下testlog
里的时间是否跟数据插入时间一致。
- lib_mysqludf_sys_0.0.3.tar.gz (8.9 KB)
- 下载次数: 23
发表评论
-
转:一条UPDATE从生到死的整个过程的深入解析
2019-02-23 14:23 518一条UPDATE从生到死的整 ... -
转:scn问题详解
2019-02-23 14:21 589ORACLE SCN问题详解(1)--基础概念详解 ... -
转:Redo Level 11 - Table Operation (DML)
2019-02-23 14:12 533Redo Level 11 - Table Operatio ... -
转发:LogMiner配置使用手册
2018-01-10 18:11 310http://www.cnblogs.com/shishan ... -
oracle 12c pdb
2018-01-10 18:07 614ORACLE 12C中提出来CDB和PDB的概念,对于 ... -
转;v$session,v$session_wait,v$session_wait_history,v$active_session_history
2018-01-10 17:55 488v$session,v$session_wait,v$ ... -
转:sqlplus非交互使用
2017-10-26 14:13 1235sqlplus的非交互式使用 ... -
转:archive log 日志已满
2016-12-15 16:22 1894转帖:原文地址http://blog.csdn.net/p ... -
转:linux系统mysql安装后文件分布情况
2016-01-19 20:31 0MySQL安装完成后不象SQL Server默认安装在一个目 ... -
NLS_COMP和NLS_SORT
2016-01-06 18:49 907oracle中gbk和utf8的数据库在默认nls_com ... -
oracle的collation
2016-01-05 22:40 746一、 In Microsoft SQL Server, ... -
How do I find my database collation and what collations are recommended for Serv
2016-01-05 22:33 0How do I find my database coll ... -
转:mysql 的charaset 与 collation
2016-01-05 22:20 748http://zhongwei-leg.iteye.com ... -
转:mysql与oracle的元数据对比
2016-01-05 22:08 1055MySQL和Oracle虽然在架构上有很大的不同,但是如果从某 ... -
数据仓库之拉链算法(转)
2013-11-22 10:17 1557数据仓库之拉链算法(转)链:古代软兵器的中介之物,故名思意 ... -
配置oracle11g通过dblink+透明网关访问GBase
2013-06-10 17:53 2521一、在oracle的服务器 ... -
数据仓库入门
2013-02-17 09:59 1497数据仓库,英文名称为Data Warehouse, ... -
ODS
2013-02-17 09:46 1010ODS(英语:Operational Data Store) ... -
摘录:mysql视图
2012-01-03 12:06 882第22章:视图 目录 ... -
MYSQL Query Cache
2011-12-27 16:36 1502Query Cache,查询缓存,是m ...
相关推荐
MySQL数据库系统虽然功能强大,但在某些特定场景下,如需要执行操作系统级别的任务或者调用外部程序时,其原生功能可能会显得不足。这时,我们可以通过引入外部脚本库来扩展MySQL的功能。标题“mysql调用外部脚本库...
7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. ...
7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. ...
7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. ...
7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. ...
7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. ...
7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 ...
7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. ...
7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 ...
MySQL本地化和国际应用 5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集...
5. 调用DLL函数:在主程序中,可以直接像调用本地函数一样调用DLL中的函数。 接下来,我们转向MYSQL数据库的使用。MYSQL是一个开源的关系型数据库管理系统,广泛应用于Web应用开发,具有高性能、高可靠性以及易于...
1.外部参数可控应用程序调用了能够执行系统命令的函数,比如服务器程序通过 system 、 eval 、 exec 等危险函数直接或者间接调用了 cmd.exe 。而攻击者恰好能够控制这些函数的参数,比如可以通过浏览器或者一些其他...
本地硬盘上的程序,通常是指安装在计算机硬盘上的可执行文件(.exe),当用户双击或者通过命令行调用时,操作系统会加载并执行这些程序。 2. **GetDriveTypeA函数**:这是一个Windows API函数,用于获取指定驱动器...
`proc_open`是PHP中的一个函数,用于执行外部命令并接收其输出。如果这个文件没有使用`proc_open`,可能是因为在某些环境下该函数不可用或者被禁用,因此采用了其他方法来实现同步和压缩。 4. **7a06cbff6d52a62488...
通过SQL命令`UPDATE mysql.user SET Password = PASSWORD('newpwd') WHERE User = 'root';`并执行`FLUSH PRIVILEGES;`来更新权限表,确保只有授权用户才能访问数据库系统。 #### 3. 访问控制列表(ACL)与SSL支持 ...
标题"纯AS3链接本地数据库"暗示我们将不依赖任何外部库,如asSQL-Beta2.8.swc或rps.swc,而是使用AS3的原生功能来实现这一目标。这通常意味着我们需要构建自定义的通信层,以便与MySQL数据库进行交互。 在AS3中,...
外部数据库是指不在本地应用程序内部,而是通过网络或文件系统连接的数据库。这种数据库通常由专门的数据库管理系统(如MySQL、SQL Server、Oracle等)管理,提供了数据的存储、查询、更新和删除等功能。 二、...
总的来说,《mydb数据库备份程序(PHP版)》为MySQL数据库的备份提供了一种自动化的方式,尽管存在潜在风险,但通过适当的学习和改进,它能成为维护数据安全的有力工具。在实际应用中,结合定期备份策略和验证恢复...
在包目录中,以`_test.go`结尾的文件会被编译成测试程序,`go build`命令会忽略这些文件。测试文件中的以`Test`开头的函数会被`gotest`命令执行并输出结果。 #### 3. 常用的UT测试方法 ##### 3.1 函数变量测试法 ...