如何在Mysql存储过程中包含.sh(脚本)文件?

时间:2011-07-21 06:16:25

标签: mysql stored-procedures

是否可以在Mysql的存储过程中包含脚本文件(.sh文件)? 如果是,那怎么样? 如果不是,为什么呢?

1 个答案:

答案 0 :(得分:1)

就像@mu太短了说:

您需要安装这些UDF:http://www.mysqludf.org/lib_mysqludf_sys/index.php
这是下载链接:http://www.mysqludf.org/lib_mysqludf_sys/lib_mysqludf_sys_0.0.3.tar.gz

请注意,shell命令将使用MySQL用户的权限运行,而不是使用连接到MySQL的用户的权限。 从安全角度来看,这可能是一个坏主意。

请注意链接中的警告:

  

注意事项   在决定是否需要此功能时要非常小心。 UDF可供所有数据库用户使用 - 您无法为它们授予EXECUTE权限。由于传递给sys_exec的命令字符串几乎可以完成所有操作,因此暴露该函数会带来非常真实的安全隐患。

     

即使对于良性使用者,也可能会意外地造成很大的伤害。调用将以运行MySQL的操作系统用户的权限执行,因此删除MySQL的数据目录完全可行,或者更糟。

     

该功能适用​​于需要对操作系统进行扩展控制的专用MySQL应用程序。目前,我们没有针对ftp,email和http的UDF,并且该功能可以用于实现这样的功能,以防真正需要(数据仓库临时区域可能是一个例子)。

     

你被警告了!如果您没有看到危险,请不要试图找到它;请相信我。

     

如果您决定在生产环境中使用此库,请确保只能使用AppArmor运行特定命令并限制文件访问。