将数据库下的所有 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';
注意:mydatabase
、myuser
和 myuserdefunc
;仅作为示例,将替换为适合您项目的值。
【讨论】:
从安全角度来看,可能不希望对所有对象授予执行权限。有人可以评论一下授予对所有对象执行的任何安全问题吗?以上是关于将数据库下的所有 MySQL 用户定义函数授予/允许用户的主要内容,如果未能解决你的问题,请参考以下文章