|
1
1
您可能会考虑使用更具特色的脚本语言(如Perl、Python、PHP或Ruby)编写脚本。所有这些语言都有运行SQL查询的库。 存储过程语言中没有用于运行shell命令的内置方法。这被认为是一个坏主意,不仅因为它是一个安全漏洞,而且因为shell命令的任何效果都不服从事务隔离或回滚,就像您在存储过程中执行的任何SQL操作的效果一样:
如果
我建议您在存储过程中执行SQL工作,并在调用存储过程的应用程序中执行其他工作。 |
|
|
2
1
这并不是问题的答案,而是这种功能的正当理由——因此否定了那些会说“你应该做些别的”或“你为什么要做”的人。 我有一个数据库,我正在努力保持严格的规则-我不希望孤儿在任何地方。引用完整性检查在表级别上有助于实现这一点,但我必须将一些数据作为文件保存在文件系统中(这是老板直接命令我不要在数据库本身存储任何二进制数据的结果)。 这里显而易见的解决方案是有一个触发器,它在删除记录时触发,然后自动删除关联的外部文件。 现在,我意识到UDF可以提供一个解决方案,但是这看起来像是大量的C/C++工作来简单地删除一个文件。当然,数据库权限本身至少会提供 一些 来自潜在袭击者的安全。 现在,我意识到我可以编写一个shell脚本,或者一些这样的脚本,它可以删除表记录,然后删除相关的文件,但同样,这不在数据库的领域内。 它本身 . 正如一位老教练曾经告诉我的,“业务规则应该反映在数据库的规则中”。正如人们所看到的,我不能使用mysql来强制实现这一点。 |
|
|
3
1
请参见中的do_system()。 http://www.databasesecurity.com/mysql/HackproofingMySQL.pdf |
|
|
4
0
根据 this post 在forums.mysql.com上,解决方案是使用 MySQL_Proxy . |
|
|
blogger13 · 视频租赁店数据库的规范化 1 年前 |
|
|
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
Grenish Rai · Firestore错误“用户文档不存在” 1 年前 |
|
|
Saijo-Shi · PLpgsql中的更新触发器 2 年前 |
|
Dante · Django::配置不当:池不支持持久连接 2 年前 |
|
YouLocalRUser · 删除重复行,保留第一行 2 年前 |