如何阻止创建名称与特定模式匹配的 MySQL 数据库

Posted

技术标签:

【中文标题】如何阻止创建名称与特定模式匹配的 MySQL 数据库【英文标题】:How to block creation of MySQL database with name that matches a certain pattern 【发布时间】:2021-03-10 19:35:11 【问题描述】:

有没有办法配置 mysql 以防止创建名称与特定条件匹配的数据库模式?理想情况下,我想防止创建与模式匹配的名称,但如果有解决方案来阻止 匹配模式的名称,我想我也可以做到这一点。例如,我想阻止创建名称以数字开头的模式。

【问题讨论】:

MsSQL 含义...MySQL? 除了 DBA 之外,还有谁在您的系统上创建表?允许访问随机的人听起来非常冒险和不明智,即使有这样的某种“健全性检查”。 @tadman 是的。 MySQL。是一个错字谢谢。 @tadman,这是一个开发数据库,​​模式是根据开发人员的主机名自动创建的。在某些情况下,缺少开发人员主机名,并且将使用 IP 地址创建数据库。我希望数据库创建失败,以便开发人员记得修复丢失的主机名问题。 如果在数据库级别没有简单的方法可以做到这一点,我只会要求维护调用架构创建的自动代码的人员在那里设置条件。 【参考方案1】:

如果您grant the CREATE privilege 给给定用户,他们可以创建表或模式。无法按命名约定过滤它们。

您可以创建一个接受字符串参数的存储过程。然后根据正则表达式检查字符串,如果没问题,则在准备好的语句中使用该字符串。

这样你可以将CREATE权限授予过程的所有者,然后允许用户调用过程。

如果您不想使用存储过程,那么也许可以实现一个 API 来做到这一点。

【讨论】:

以上是关于如何阻止创建名称与特定模式匹配的 MySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

通过 MapReduce 读取与特定模式匹配的目录中的文件并输出各个文件的名称

如何阻止机器人对与 Apache 中的常见模式匹配的 URL 的请求?

如何在redis中删除与特定模式匹配的键

在 MySQL / PHP 中匹配相似的字符串

是否可以使用模式匹配从 Oracle SQL 数据库中选择列?

使用 jq 模式匹配字段名称