我知道我正在寻找的可能是一个安全漏洞,但由于我设法在 Oracle 和 SQL Server 中做到了这一点,所以我会尝试一下:
我正在寻找一种从 MySQL 上的 SQL 脚本执行 shell 命令的方法。如有必要,可以创建和使用新的存储过程。
注意:我不是在寻找 mysql 命令行工具提供的 SYSTEM 命令。相反,我正在寻找这样的东西:
开始如果
状况1...
EXEC_OS cmd1;别的
EXEC_OS cmd2;结尾;
其中 EXEC_OS 是调用我的代码的方法。
您可能需要考虑使用功能更强大的脚本语言编写脚本,例如 Perl、Python、PHP 或 Ruby。所有这些语言都有运行 SQL 查询的库。
存储过程语言中没有用于运行 shell 命令的内置方法。这被认为是一个坏主意,不仅因为它是一个安全漏洞,而且因为 shell 命令的任何效果都不遵守事务隔离或回滚,就像在存储过程中执行的任何 SQL 操作的效果一样:
START TRANSACTION;
CALL MyProcedure();
ROLLBACK;
If MyProcedure
执行任何操作,例如创建或编辑文件,或发送电子邮件等,这些操作不会回滚。
我建议在存储过程中执行 SQL 工作,并在调用存储过程的应用程序中执行其他工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)