MySQL 实现调用外部程序和系统命令
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL 实现调用外部程序和系统命令,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3152字,纯文字阅读大概需要5分钟。
内容图文
ftp://pub:pub@pepstack.com/tarball/lib_mysqludf_sys.tar.gz
里面包括了已经编译好的64位 lib_mysqludf_sys.so,仅仅要拷贝到 plugin_dir 文件夹下就可以。
**********************************************************************************************
6) Install the library ‘lib_mysqludf_sys.so‘ from terminal using following command:
$ mysql -u root -p??? -h xxxmysql> source ./lib_mysqludf_sys.sql
7) 測试
mysql> select sys_eval(‘id‘);
+----------------+
| sys_eval(‘id‘) |
+----------------+
| |
+----------------+
1 row in set (0.00 sec)
发现不起作用。这是因为apparmor控制引起的。AppArmor 是一个相似于selinux 的东西。基本的作用是设置某个可运行程序的訪问控制权限。能够限制程序 读/写某个文件夹/文件。打开/读/写网络port等。(參考:http://www.oschina.net/p/apparmor)
运行以下的命令:
$ sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ $ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld再次測试:
mysql> mysql> select sys_eval(‘id‘);
+--------------------------------------------------+
| sys_eval(‘id‘) |
+--------------------------------------------------+
| uid=114(mysql) gid=125(mysql) groups=125(mysql) |
+--------------------------------------------------+
1 row in set (0.01 sec)
成功!
8)实战应用
创建文件夹:
$ sudo mkdir /usr/local/logserver/mysqludf $ sudo vi /usr/local/logserver/mysqludf/test.sh
test.sh内容例如以下:
#!/bin/sh # # mysqludf-test.sh # # # 2017-02-11 ######################################################################## _file=$(readlink -f $0) _cdir=$(dirname $_file) _name=$(basename $_file) echo "create date file:" date > ${_cdir}/test.log echo "${_cdir}/test.log" exit 21
设置权限:
$ sudo chown mysql:mysql -R /usr/local/logserver/mysqludf $ sudo chmod a+x /usr/local/logserver/mysqludf/test.sh
确保mysqludf及test.sh都是mysql:mysql
9)測试sys_eval:
mysql> select sys_eval(‘/usr/local/logserver/mysqludf/test.sh‘); +-----------------------------------------------------------+ | sys_eval(‘/usr/local/logserver/mysqludf/test.sh‘) | +-----------------------------------------------------------+ | create date file: /usr/local/logserver/mysqludf/test.log | +-----------------------------------------------------------+ 1 row in set (0.01 sec)可见sys_eval把全部的echo输出显示出来。
10)測试sys_exec:
mysql> select sys_exec(‘/usr/local/logserver/mysqludf/test.sh‘); +---------------------------------------------------+ | sys_exec(‘/usr/local/logserver/mysqludf/test.sh‘) | +---------------------------------------------------+ | 5376 | +---------------------------------------------------+ 1 row in set (0.00 sec)
sys_exec运行test.sh之后的返回值是5376 (=256*exit 21)。因为test.sh 最后一句的:exit 21。
所以,在mysql过程里尽量使用sys_exec以获取脚本(test.sh)运行的返回值。
把test.sh改动成你的脚本,就能够使用mysqludf强大的功能了。
MySQL 实现调用外部程序和系统命令
标签:port span get uid clu 内容 odi root follow
本文系统来源:http://www.cnblogs.com/yfceshi/p/7259020.html
内容总结
以上是互联网集市为您收集整理的MySQL 实现调用外部程序和系统命令全部内容,希望文章能够帮你解决MySQL 实现调用外部程序和系统命令所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。