在MySQL中是否有办法阻止某人使用连字符创建表和/或数据库? (除了剥离用户的权限。)
例如,如果我们有想要这样做的用户IamADummy,
CREATE TABLE `I-am-a-bad-table-name`;
OR
CREATE DATABASE `Bad-Idea`;
是否有设置会阻止用户这样做?
谢谢!
答案 0 :(得分:5)
唯一的restrictions on table identifiers如下:
为了有任何其他限制,您必须在运行之前检查系统中的查询并进行适当调整。
答案 1 :(得分:3)
我不是专家,但看起来不像:
http://www.learn-mysql-tutorial.com/Identifiers.cfm
礼貌地告诉IAMADummy使用下划线,如果他继续使用超级(减号)“剥夺用户的权限”或每小时运行一个脚本,删除带连字符的表的所有权限。当IAMADummy打电话时,告诉他一个新功能。
答案 2 :(得分:1)
我不这么认为。连字符是数据库或表名的有效部分,如mySQL手册中的schema object names章所述。
一些头脑风暴要点:
Triggers仅适用于表级
我认为在创建数据库/表之前没有任何可以执行存储过程的钩子 - 如果我错了,请纠正我,当然
据我所知,没有办法使用权限来阻止使用某种命名模式创建表/数据库。
唯一想到的是破坏在文件系统级别创建数据库目录(如果它包含连字符)。当然可以在Linux系统上以某种方式完成,但这是一个可怕的想法。
您必须教IAMADummy不要在表名中使用连字符,或者在mysql周围创建一个包装器来分析用户编写的查询,并在将有问题的命令传递到数据库之前阻止它们的执行。
答案 3 :(得分:1)
如果您使用的是PHP,则可以使用php函数来削减输入。
如果您使用MySQL“直接”,也许您或您认识的人可以组合一个小程序,充当用户和MySQL之间的代理。重命名MySQL程序并调用代理(假设是Windows)无论MySQL程序最初命名的是什么。
代理应该获取登录信息和查询并将其传递给MySQL客户端。