Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 阻止用户使用连字符创建表和/或数据库_Mysql - Fatal编程技术网

Mysql 阻止用户使用连字符创建表和/或数据库

Mysql 阻止用户使用连字符创建表和/或数据库,mysql,Mysql,MySQL中是否有方法阻止某人使用连字符创建表和/或数据库?(除从用户中剥离权限外。) 例如,如果有用户IamADummy想要这样做 CREATE TABLE `I-am-a-bad-table-name`; 或 是否存在阻止用户这样做的设置 谢谢 我不是专家,但看起来不像: 礼貌地告诉IAMADummy使用下划线,如果他继续使用hypens(减号),“剥夺用户的权限”,或者每小时运行一个脚本,用连字符删除表中的所有权限。当我成年人打电话时,告诉他这是一项新功能。我不这么认为。正如mySQL

MySQL中是否有方法阻止某人使用连字符创建表和/或数据库?(除从用户中剥离权限外。)

例如,如果有用户IamADummy想要这样做

CREATE TABLE `I-am-a-bad-table-name`;

是否存在阻止用户这样做的设置


谢谢

我不是专家,但看起来不像:


礼貌地告诉IAMADummy使用下划线,如果他继续使用hypens(减号),“剥夺用户的权限”,或者每小时运行一个脚本,用连字符删除表中的所有权限。当我成年人打电话时,告诉他这是一项新功能。

我不这么认为。正如mySQL手册中的章节所指出的,连字符是数据库或表名的有效部分

一些头脑风暴要点:

  • 仅在桌面上工作

  • 我不认为有任何钩子可以在创建数据库/表之前执行存储过程——当然,如果我错了,请纠正我

  • 据我所知,没有办法使用权限阻止创建具有特定命名模式的表/数据库

我想到的唯一一件事是,如果数据库目录包含连字符,就会破坏文件系统级数据库目录的创建。当然可以在Linux系统上以某种方式完成,但这是一个可怕的想法

您必须教会IAMADummy不要在表名中使用连字符,或者在mysql周围创建一个包装器,以分析用户编写的查询,并在将违规命令传递到数据库之前阻止其执行。

唯一的方法如下:

  • 任何标识符都不能包含ASCII NUL(0x00)或值为255的字节
  • 数据库、表和列名不应以空格字符结尾
  • 数据库和表名不能包含“/”、“\”、“.”或文件名中不允许的字符

为了有任何其他限制,您必须在运行查询之前检查系统中的查询,并对其进行适当调整。

如果您使用的是PHP,则可以使用PHP函数来减少输入

如果您使用的是MySQL“直截了当”,也许您或您认识的人可以编写一个小程序,作为用户和MySQL之间的代理。重命名MySQL程序并调用代理(假设windows),不管MySQL程序最初的名称是什么


代理应该获取登录信息和查询,并将其传递给MySQL客户端。

+1,以避免告诉IamADummy他是一个哑巴。是的,这就是我的想法。谢谢+1的功能-当然,如果我可以添加+2我会。尼斯:)
CREATE DATABASE `Bad-Idea`;