将数据库下的所有 MySQL 用户定义函数授予/允许用户

Posted

技术标签:

【中文标题】将数据库下的所有 MySQL 用户定义函数授予/允许用户【英文标题】:Grant/Permit all MySQL User Defined Functions under a database to a user 【发布时间】:2014-05-27 11:05:28 【问题描述】:

如何将数据库下所有用户定义函数的执行权限授予特定用户?新用户可以执行/运行其他用户定义的所有功能。

1. GRANT ALL ON DATABASE.* TO 'USERNAME'@'HOSTNAME';
2. GRANT EXECUTE ON DATABASE.* TO 'USERNAME'@'HOSTNAME';

这两次尝试都未能允许新用户。以下调用以错误结束。

SELECT f_custom_function();

对应的错误信息:

Query : ____
Error Code : 1370
execute command denied to user 'USERNAME'@'HOSTNAME' for routine 'DATABASE.f_custom_function'

【问题讨论】:

GRANT ALL ON DATABASE.* TO 'USERNAME'@'HOSTNAME'; DATABASE 应该改成其他名字 这些 CAP 仅供参考。 【参考方案1】:

以下内容将授予一个用户对一个数据库中所有对象的执行权限:

GRANT EXECUTE
  ON *.*
  TO 'myuser'@'localhost';

此替代方案允许单个用户访问单个 mysql user defined function:

GRANT EXECUTE
  ON FUNCTION `mydatabase`.`myuserdefunc`
  TO 'myuser'@'localhost';

注意:mydatabasemyusermyuserdefunc;仅作为示例,将替换为适合您项目的值。

【讨论】:

从安全角度来看,可能不希望对所有对象授予执行权限。有人可以评论一下授予对所有对象执行的任何安全问题吗?

以上是关于将数据库下的所有 MySQL 用户定义函数授予/允许用户的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE把一个用户下的所有表权限赋予另一个用户?

如何将视图的所有权限授予任意用户

SQL Server中授予用户查看对象定义的权限

mysql怎么授予用户全局层级的权限

如何在启用 skip-grant-table 时授予 root 用户所有权限

SQL Server中授予用户查看对象定义的权限